Я разрабатываю приложение, которое использует основные данные. В 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];
}
Укажите код, в котором вы определяете постоянное хранилище. – jrturton
Добавлен код, спасибо. Кстати, я уже отлаживал это, и в любом из этих методов есть ошибки. –