Я пытаюсь написать два приложения (iPhone и настольные), чтобы достичь того, что было описано в следующей ссылке:Ядро quesition данных
core-data-is-it-possible-to-build-a-desktop-app-to-create-the-data-model-for-an
Ok. Таким образом, я создал очень простое настольное приложение, у которого есть единый объект с именем Client с полем атрибута строки с именем name. Я также создал соответствующий класс модели.
Я запустил приложение, добавив пару имен клиентов в список и сохранил файл (как Testing.sqlite).
Теперь в моем эквивалентном приложении iphone я пытаюсь загрузить файл. Сначала я сгенерировал приложение с использованием одного из шаблонов приложений и включил Core Data. NB: Я отразил объект Client и создал соответствующий класс Model.
Я пошел в мой класс «приложение делегат» и внес изменения в метод persistentStoreCoordinator ссылаться на мой файл «Testing.sqlite» т.е.
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"Testing.sqlite"]];
Я также скопировал сохраненный файл настольного приложения на ожидаемый местоположение, т.е.
~/Library/Application Support/IPhone Simulator/User/... etc.
Итак, теоретически по крайней мере каждое из двух приложений должно быть одинаковым.
Однако, когда я пытаюсь загрузить данные из него, он всегда кажется пустым. Мой код выглядит примерно так:
// fetch the delegate.
TestingAppDelegate *app = (TestingAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = [app managedObjectContext];
// construct the request.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// execute the request.
NSError *error;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
if (results == nil) {
// Handle the error.
NSLog(@"No data loaded");
}
NSLog(@"Returned: %@", results);
// finally release
[results release];
[request release];
Я не могу понять, что происходит. Любые советы или предложения будут полностью оценены.
Когда я посмотрел на экземпляр persistanceStoreCoordinator, managedObjectContext, result array (NSArray) во время отладки, я вижу, что он, кажется, содержит 0 записей для всех этих. Поэтому я смущен.
NB: Файл Testing.sqlite содержит записи.
Спасибо заранее, Matt
Спасибо за этот код! Очень полезно. Однако я все еще не уверен, что вы подразумеваете под «полностью воспроизвести постоянный магазин»? Мой файл xcdatamodel и связанные классы в моем приложении iphone совпадают с моим Mac-приложением. Какие еще шаги необходимо предпринять? – Sway
Оказалось, что они были немного отличались. После исправления это сработало. В очередной раз благодарим за помощь. – Sway