2017-02-13 3 views
0

Wenn ich meine App ausführen, sind die UITableViewCells leer. Ich versuche, sie mit dem Inhalt von "NSArray sortedArray" zu füllen, der Daten in absteigender Reihenfolge auflistet.UITableViewCells wird nicht von meinem NSArray ausgefüllt

NSLog (@ "sortiertes Array% @ ist und der Zählwert% lu während Zeichenfolge auf den ersten Index% @", sortedArray, (unsigned long) [sortedArray count], indexiert);

NSLog OUTPUT:

2017-02-13 09: 50: 15,693 Test [22349: 7.300.081] sortierten Array ( "2017.02.11" "2017.01.25" "01/17/2017", "12/25/2016", "12/17/2016", "11/25/2016", "11/23/2016", "11/17/2016" , "2016.10.11", "2016.10.06", "2016.08.08", "2016.08.05", "2016.08.01", " 28.07.2016 ", "07/15/2016", "07/13/2016", "07/11/2016", "07/08/2016", "17.06.2016", "05/17/2016" , "2016.02.18", "2016.01.18", "2015.12.18", "2015.11.18", "2015.10.18", "18/09/2015", "18.08.2015", "18.07.2015", "18.06.2015", "05/22/2015", "04/17/2015 ", " 17.03.2015 ", " 17.02.2015 ", " 01/17/2015 " ) und die Zählung ist 34, während String beim ersten Index i s 02.11.2017

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

NSString *strSessionID = [[NSUserDefaults standardUserDefaults] 
          stringForKey:@"sessionID"]; 

NSString *strURL = [NSString stringWithFormat:@"http://%@/get_statement_list?session_id=%@", 
        [[NSUserDefaults standardUserDefaults]stringForKey:@"serverName"], strSessionID]; 


NSURL *aURL = [NSURL URLWithString:strURL]; 
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:aURL]; 
NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error]; 
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; NSArray *jsonArray = [dict objectForKey:@"statements"]; 
NSMutableArray *pdfs = [[NSMutableArray alloc] init]; 
NSArray *sortedArray = [[NSArray alloc] init]; 

for (int i=0; i<[jsonArray count]; i++) { 
    NSDictionary* dates = [jsonArray objectAtIndex:i]; 
    NSString *MM=[dates objectForKey:@"month"]; 
    NSString *DD=[dates objectForKey:@"day"]; 
    NSString *YY=[dates objectForKey:@"year"]; 
    NSString *iDates = [NSString stringWithFormat: @"%@/%@/%@", MM, DD, YY]; 
    [pdfs addObject:iDates]; 
} 

//put in descending date order 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"MM/dd/yyyy"]; 
sortedArray = [pdfs sortedArrayUsingComparator:^NSComparisonResult(NSString 
*obj1, NSString *obj2) { 
    NSDate *d1 = [df dateFromString: obj1]; 
    NSDate *d2 = [df dateFromString: obj2]; 
    return [d2 compare: d1]; 
}]; 

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: 
    (NSInteger)section 
{ 
return [sortedArray count]; 

} 

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

UITableViewCell *cell = [tableView 
dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] 
initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"]; 
} 

NSString *statements = [NSString stringWithFormat:@"%@", 
[sortedArray objectAtIndex:indexPath.row]]; 


cell.textLabel.text = statements; 

return cell; 
} 

Warum werden meine Tabellenansichtszellen nicht mit den Objekten in sortedArray gefüllt? Wie behebe ich das?

+0

pls zeigen vollständigen Code. Zeig Teile nicht. –

+3

versuchen Sie '[tableview reloadData]' wenn Array bereits gefüllt ist - kann Ihr Array zu spät füllen – Daivest

Antwort

1

Wenn Sie die Tabellenansicht im Interface Builder eingerichtet haben, haben Sie die Datenquelle und den Delegaten mit dieser Klasse verbunden. Wie im Bild gezeigt enter image description here.

Ziehen Sie mit STRG gedrückt aus der Tabellenansicht auf den Besitzer der Datei. enter image description here.

Falls Sie Ihre Tabellenansicht programmgesteuert zur Verfügung gestellt haben, müssen Sie die Verbindung in Code herstellen.

+0

Ja, ich habe bereits den Delegaten und die Datenquelle im Interface Builder verbunden. :/ – Kelly

+0

Versuchen Sie, einen Breakpoint auf der cellForRowAtIndexPath festzulegen: Methode, die überprüft werden soll, wenn die Methode aufgerufen wird. Wenn nicht, fehlt möglicherweise das Delegatprotokoll UITableViewDelegate, UITableViewDataSource. – voltae

+1

Mein Problem ist gelöst. Hat die Tabelle zu einer Eigenschaft anstelle einer Instanzvariablen gemacht. Bezogen auf das NSArray von "self.sortedArray" und letztendlich [tableview reloadData] funktionierte! Vielen Dank! @Daivest – Kelly

Verwandte Themen