2012-04-29 28 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擴展文件才能正確加載文件(對於來自框架的資源,沒有目錄)。也許可能是這個。

相關問題