Я пытаюсь загрузить и сохранить мою модель данных, в настоящее время только для тестовых случаев, но это может быть интересно и позже.Как загрузить/сохранить базовую модель данных программным путем?
Я могу создать базовую модель данных, я могу создавать объекты и т. Д. Я даже нашел способ сохранить (это правильный путь?), И я заставляю программу загружать его. Но тогда зарегистрированное значение Object равно 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]);
Тестовый пример красиво выполнен, только последний тест не с отсчетом 0. XML-файл, созданный между хорошо выглядит слишком.
- Нужно ли сначала извлекать объекты? Или что еще пошло не так?
- И еще я использую правильный подход для сохранения и загрузки базовой модели данных в и из файла XML и из него? Нужно ли мне иметь дело с
NSPersistentStoreCoordinator
?
Большое спасибо заранее!
Вы были правы. Сначала мне нужно было найти объекты. – Klaus