2012-04-29 26 views
1

我正在开发一个使用核心数据的应用程序。在iOS 5中,我没有任何问题。但是,在iOS 4中,当我尝试保存任何信息时,我收到一条错误消息(更确切地说:Cocoa错误134030和“没有这样的文件或目录”)。当我查看文档文件夹时,SQL文件不在那里。我已经对此进行了调试,并且这些方法中没有一个会导致错误或nil指针。为什么Core Data在iOS 4上没有正确设置?

最奇怪的部分:addPersistentStoreWithType方法不会返回任何错误,但同时不会创建sqlite文件。

在一行中,我的应用程序没有在文档文件夹中创建sql文件。再次,这只发生在iOS 4中。

为什么我的应用程序不在iOS 4上创建sqlite文件?

//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 2012-04-29 11:23:38

+0

添加代码,谢谢。顺便说一句,我已经调试过了,在这些方法中有错误。 – 2012-04-29 11:31:38

回答

0

我发现了什么问题解决了:不是,如果它已经存在返回检查

当上面写的每一个方法是所谓的,我又创建对象。所以,现在的代码,它也在iOS 4中工作。

0

有时候,你应该使用扩展mom为您的文件,有时momd。第一个是文件,第二个是引用一个目录。

我看到嵌入式资源,有时我需要使用mom扩展文件才能正确加载文件(对于来自框架的资源,没有目录)。也许可能是这个。

相关问题