현재 테스트 케이스 용으로 데이터 모델을로드하고 저장하려고 시도하지만 나중에 관심이있을 수도 있습니다.코어 데이터 모델을 프로그래밍 방식으로로드/저장하는 방법은 무엇입니까?
코어 데이터 모델을 만들 수 있습니다. 오브젝트를 생성 할 수 있습니다. 저장 방법도 찾아 냈고 (올바른 방법입니까?)로드 할 프로그램을 만듭니다. 그렇다면 등록 된 객체 수는 0입니다. 아무도 이해합니까?
//not part of the snippet here is the setup of some objects, etc.
//mdoc is the NSPersistentDocument instance (to be precise KKDocument instance which
//extends NSPersistentDocument)
XCTAssertTrue([[mdoc.managedObjectContext registeredObjects] count] == 5);
//save the document, note that kkFileType is the UTI-string for my model which is conform to public.xml
NSError * error;
NSURL *modelURL = [NSURL fileURLWithPath:@"testData.vith" isDirectory:FALSE];
NSLog(@"save url %@",modelURL.absoluteString);
[mdoc saveToURL:modelURL ofType:kkFileType forSaveOperation:NSSaveOperation completionHandler:^(NSError *errorOrNil){
NSLog(@"error saving %@",errorOrNil);
}];
//load data into second document
KKDocument *second = [[KKDocument alloc] init];
XCTAssertTrue([second readFromURL:modelURL ofType:kkFileType error:&error],@"error: %@",error);
//check that structure is provided
XCTAssertTrue(second.managedObjectContext != nil,"managedObjectContext missing");
XCTAssertTrue([second.managedObjectContext registeredObjects] != nil,"no registered Objects?");
//this test fails with message "instead 0"
XCTAssertTrue([[second.managedObjectContext registeredObjects] count] == 5, "instead %d", [[second.managedObjectContext registeredObjects] count]);
마지막 테스트가 실패하고 마지막 테스트 만 실패합니다. 중간에 생성 된 XML 파일도 잘 보입니다.
- 먼저 개체를 가져와야합니까? 아니면 다른 무엇이 잘못 되었습니까?
- 그리고 올바른 방법을 사용하여 핵심 데이터 모델을 저장하고 XML 파일과로드하는 방법을 사용합니까? 대신
NSPersistentStoreCoordinator
을 처리해야합니까?
미리 감사드립니다.
당신이 옳았습니다. 먼저 객체를 가져와야했습니다. – Klaus