2011-01-14 44 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! 
相关问题