Próbuję odczytać plik JSON w Objective-C
Próbuję przeczytać plik json w mojej aplikacji Objective-C, ale niestety otrzymuję wyjątek RuntimeException. Dokładny błąd to:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'data parameter is nil'
Mój plik json nazywa się „Transactions.json
[{ "transaction": "300001", "date": "1/1/11", "type": "ABC", "status": "State1" },
{ "transaction": "300002", "date": "2/2/12", "type": "XYZ", "status": "State2" },
{ "transaction": "300003", "date": "3/3/13", "type": "ABC", "status": "State3" },
{ "transaction": "300004", "date": "2/2/12", "type": "XYZ", "status": "State2" },
{ "transaction": "300005", "date": "3/3/13", "type": "ABC", "status": "State3" },
{ "transaction": "300006", "date": "2/2/12", "type": "XYZ", "status": "State2" },
{ "transaction": "300007", "date": "3/3/13", "type": "ABC", "status": "State3" },
{ "transaction": "300008", "date": "2/2/12", "type": "XYZ", "status": "State2" },
{ "transaction": "300009", "date": "3/3/13", "type": "ABC", "status": "State3" },
{ "transaction": "300010", "date": "4/4/14", "type": "XYZ", "status": "State4" } ]
Moja metoda, która odczytuje plik, wygląda tak:
int main(int argc, const char * argv[])
{
@autoreleasepool {
// Create the managed object context
NSManagedObjectContext *context = managedObjectContext();
// Custom code here...
// Save the managed object context
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Error while saving %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");
exit(1);
}
NSError *err = nil;
NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"Transactions" ofType:@"json"];
NSLog(@"Hello: %@", dataPath);
NSArray *transaction = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:dataPath] options:kNilOptions error:&err];
NSLog(@"Transaction list: %@", transaction);
}
return 0;
}
Czego nie rozumiem, to dlaczego obiekt NSData ma wartość null, gdy czytam plik JSON? Czy ktoś widzi, co robię źle? Dla rekordu próbowałem sprawdzić, czy w moim pliku JSON nie ma obcych obszarów i próbowałem umieścić plik JSON w różnych miejscach w moim folderze aplikacji i nic nie działało.
Z góry dziękuję wszystkim, którzy odpowiedzą.