CoreData 테이블로 구문 분석해야하는 복잡한 JSON 파일이 있습니다. 현재, I는 this format와 NSArray를 다음 6 개 요소로 데이터를 캡처 :xcode의 중첩 NSDictionary 및 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를 것 같습니다. 그게 사실이야?
내가 스탠포드 대학의 폴 Hegarty에서 코드를 사용하여 간단한 단일 계층 JSON 파일을 캡처 한 : 내 CoreData 테이블의 모든 레코드에 대한 각 노드의 데이터 요소를 필요
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];
}];
});
합니다. 예를 들어 학교 노드의 SchoolName, 시즌 노드의 IDSeason 및 결과 노드의 모든 요소가 단일 CoreData 테이블 행 (레코드)에 기록됩니다.
도트 표기법을 사용하고 NSArray를 통해 반복을 포기해야합니까? 아니면 NSArray를 여러 개 캡처해야합니다. 이 일로 제 머리를 쓰는 데 어려움을 겪습니다.
감사합니다.
그것은 단지 배열과 사전에있는 데이터입니다. 한때 JSON이었던 것을 잊어 버리십시오. –
나는 이것에 대해 생각해 보았 기 때문에 나는 나의 질문을 편집했다. 이 데이터가 JSON에서 구문 분석되는 방식을 감안할 때 SchType을 NSDictionaires의 중첩 NSArray로 생각해야합니까? – PhillipOReilly
관련 NSDictionary에 액세스하기 위해 NSArray의 레벨을 반복하는 방법을 파악하는 데 여전히 어려움을 겪고 있습니다. – PhillipOReilly