我有一个复杂的 JSON 文件,需要将其解析为 CoreData 表。目前,我使用这种格式和以下 6 个元素将数据捕获到 NSArray 中:
2013-08-29 10:54:04.930 iTrackTest[1542:c07] athleteRecords[0]: @SchoolID
2013-08-29 10:54:04.930 iTrackTest[1542:c07] athleteRecords[1]: @LastName
2013-08-29 10:54:04.930 iTrackTest[1542:c07] athleteRecords[2]: @Gender
2013-08-29 10:54:04.931 iTrackTest[1542:c07] athleteRecords[3]: SchType
2013-08-29 10:54:04.931 iTrackTest[1542:c07] athleteRecords[4]: @FirstName
2013-08-29 10:54:04.931 iTrackTest[1542:c07] athleteRecords[5]: @IDAthlete
第一个问题,SchType 似乎是 NSDictionaries 的 k 维 NSArray。真的吗?
我一直在使用来自斯坦福大学的 Paul Hegarty 的代码来捕获更简单的单层 JSON 文件:
dispatch_async(fetchQ, ^{
NSArray *athleteRecords;
athleteRecords = [AthleticNetDataFetcher retrieveDataForAthleteWithID:athleteID];
NSLog(@"In %@: athleteRecords has %d records",NSStringFromClass([self class]), [athleteRecords count]);
NSLog(@"NSArray with athleteRecords: %@", athleteRecords);
[document.managedObjectContext performBlock:^{
int iCount=0;
for (NSDictionary *athleteInfo in athleteRecords) {
[self resultsWithAthleteInfoForAthleteWithID:athleteInfo inManagedObjectContext:document.managedObjectContext];
NSLog(@"athleteRecords[%d]: %@", iCount, athleteInfo);
iCount++;
}
[document saveToURL:document.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:NULL];
}];
});
我的 CoreData 表中的每条记录都需要来自每个节点的数据元素。例如,来自 School 节点的 SchoolName、来自 Season 节点的 IDSeason 以及来自 Results 节点的所有元素都将写入单个 CoreData 表行(记录)。
我是否需要使用点表示法并放弃通过 NSArray 的迭代,或者我是否需要捕获多个 NSArray,每个 NSArray 的数据都在节点下方?很难理解这一点。
谢谢!