2011-01-14 45 views
11

我正在使用此Xcode模板作爲核心數據。iphone - coredata應用程序目錄

在代表,我有這樣的方法:

- (NSURL *)applicationDocumentsDirectory { 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 

但這需要iOS4的。

我想使應用程序與3.0兼容。

所以,我轉換這個方法:

- (NSURL *)applicationDocumentsDirectory { 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    return [NSURL URLWithString:documentsDirectory]; 

} 

但當coredata嘗試使用商店網址上

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyFile.sqlite"]; 
    if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 

崩潰與消息的IF行:

CoreData SQL僅存儲支持文件URL(獲得/var/mobile/Applications/BB312A7E-6AE1-4BA2-AD87-6B96D8855CC6/Documents/MyFile.sqlite)。'

但是StoreURL是NSURL!

任何線索?由於

回答

24

嘗試做:

NSString *pathToYourSqliteFile = @"/your/path/here"; 
NSURL *storeURL = [NSURL fileURLWithPath: isDirectory:NO]; 

看看是否做的伎倆。

+0

謝謝!你是男人! – SpaceDog

+0

我的應用程序部署目標是8.0,並且它適用於它!謝謝! –

0

斯威夫特3

let documentsUrl = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first! 
相關問題