Objective-C 응용 프로그램에서 json 파일을 읽으려고하지만 불행히도 RuntimeException이 발생합니다. 정확한 오류는 다음과 같습니다Objective-C에서 JSON 파일을 읽으려고합니다.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'data parameter is nil'
내 JSON 파일이 "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" } ]
파일에 읽고
내 방법은 다음과 같습니다
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;
}
내가 돈 무엇 ' JSON 파일을 읽을 때 NSData 객체가 null로 올라간다는 사실을 이해하고 있습니다. 내가 뭘 잘못하고 있는지 알 수 있습니까? 그냥 기록을 위해 JSON 파일의 불필요한 공백을 검사 해 보았습니다. 시도한 placin 내 응용 프로그램 폴더 내의 다른 위치에있는 JSON 파일. 아무 것도 작동하지 않았습니다.
미리 답변 해 주신 모든 분께 감사드립니다.
이 iOS 또는 OSx입니까? "dataPath"에 대해 기록 된 값은 무엇입니까? –
그리고 일반적으로 : 작업을 함께 연결하지 마십시오. NSData 포인터를 임시 변수에 할당 한 다음 해당 임시 변수를 사용하여 NSJSONSerialization을 제공하십시오. 디버깅을 훨씬 간단하게 만듭니다. –
"err"의 내용을 기록하십시오. –