2016-03-24 4 views
0

Ich habe dies folgenden Code füllen, die ich eine NSMutableArray von einer JSON-Datei zu füllen verwenden es als Datenquelle für eine Collection spät zu verwenden:kann nicht NSMutableArray von JSON-Datei

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"governorates" ofType:@"json"]; 
NSData *content = [[NSData alloc] initWithContentsOfFile:filePath]; 
NSDictionary *governorateJson = [NSJSONSerialization JSONObjectWithData:content options:kNilOptions error:nil]; 
NSArray *govNSArray = [governorateJson objectForKey:@"gouvernorats"]; 
if ([govNSArray isKindOfClass:[NSArray class]]){ 
    for (NSDictionary *dictionary in govNSArray) { 
     Governorate *govModel = [Governorate new] ; 
     govModel.govID = [dictionary objectForKey:@"id"]; 
     govModel.govNameAr = [[dictionary objectForKey:@"nom"] objectForKey:@"ar"]; 
     govModel.govNameFr = [[dictionary objectForKey:@"nom"] objectForKey:@"fr"]; 
     [self.governoratesArray addObject:govModel]; 
     [self.governoratesString addObject:govModel.govNameAr]; 
     NSLog(@"Count: %lu", (unsigned long) self.governoratesString.count); 
    } 
    NSLog(@"Total Count: %lu", (unsigned long) self.governoratesString.count); 
} 

Das Problem ist die NSMutableArray scheint immer leer zu sein, und ich benutze genau den gleichen Code an einem anderen Ort mit der gleichen JSON-Datei und es funktioniert gut.

+0

Was bekommen Sie für Ihre 'NSLog' Anweisungen? Erhalten Sie die Daten, die Sie erwarten? – Russell

+0

Ich habe 0 Element –

Antwort

1

Überprüfen Sie einmal, ob das veränderbare Array init oder nicht zugewiesen wird, bevor Sie es verwenden.

+0

Dank @Akshay, Es scheint, dass ich vergessen habe, das Array zu reservieren –

-1

U müssen prüfen, welche Art von Daten u bekommen, nachdem Daten Serialisierung, das Array oder Wörterbuch-Format .Und auch das JSON-Antwort-Format vor Parsen überprüfen ist ....

Ein weiterer Vorschlag ist zu versuchen " Wert für Key "statt Objekt für Schlüssel

NSMutableAray *arry= [governorateJson  
    valueForKey:@"gouvernorats"]; 
+0

Absolut nicht verwenden valueForKey. Lesen Sie die Dokumentation und teilen Sie uns mit, warum Sie diese Monstrosität benutzen möchten. – gnasher729

0

Sie ein neues leeres änderbaren Array überall schaffen Sie? Wenn Sie das nicht tun, wird AddObject nichts tun.

+0

Dies ist ein Kommentar, keine Antwort. – trojanfoe