2012-04-29 3 views
1

Я разрабатываю приложение, которое использует основные данные. В iOS 5 у меня нет никаких проблем.Почему Core Data не настроен правильно на iOS 4?

Однако, в iOS 4, когда я пытаюсь сохранить любую информацию, я получаю сообщение об ошибке (точнее: Cocoa error 134030 и «Нет такого файла или каталога»). Когда я смотрю в папке документов, SQL-файла там нет. Я уже отлаживал это, и ни один из этих методов не вызывает ошибок или nil указателей.

Самая странная часть: метод addPersistentStoreWithType не возвращает никаких ошибок, но в то же время файл sqlite не создается.

В одной строке мое приложение не создает файл sql в папке с документами. Опять же, это происходит только в iOS 4.

Почему мое приложение не создает файл sqlite на iOS 4?

//Core Data stack 

- (NSManagedObjectContext *)managedObjectContext 
{ 

NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
if (coordinator != nil) 
{ 
    __managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [__managedObjectContext setPersistentStoreCoordinator:coordinator]; 
} 

return __managedObjectContext; 
} 

- (NSManagedObjectModel *)managedObjectModel 
{ 
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Practi" withExtension:@"momd"]; 
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

if (__managedObjectModel == nil) 
{ 
    NSLog(@"NSManagedObjectModel in AppDelegate == nil"); 
} 

return __managedObjectModel; 
} 

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyAppDataBase.sqlite"]; 
NSError *error = nil; 
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) 
{ 

    NSLog(@"APPDELEGATE Unresolved error %@, %@", error, [error userInfo]); 
} 

return __persistentStoreCoordinator; 
} 

- (NSURL *)applicationDocumentsDirectory 
{ 
NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
return [NSURL fileURLWithPath:docsDirectory]; 
} 
+0

Укажите код, в котором вы определяете постоянное хранилище. – jrturton

+0

Добавлен код, спасибо. Кстати, я уже отлаживал это, и в любом из этих методов есть ошибки. –

ответ

0

я обнаружил, что решить эту проблему:

Когда каждый метод выше написанного называли, я снова, создавая объекты, вместо того, чтобы проверить, если он уже существует, чтобы вернуться. Итак, поскольку код сейчас, он также работает в iOS 4.

0

Иногда, вы должны использовать расширение mom для файла, а иногда momd. Первый - для файла, второй - для ссылки на каталог.

Я видел со встроенными ресурсами, которые иногда мне нужно было использовать файл расширения mom, чтобы правильно загрузить файл (в случае ресурсов из рамки нет каталога). Возможно, это может быть так.

Смежные вопросы