iphone - coredata应用程序目录

时间:2011-01-14 21:05:18

标签: iphone core-data

我正在将此Xcode模板用于核心数据。

在委托上,我有这个方法:

- (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!

任何线索?感谢

3 个答案:

答案 0 :(得分:26)

尝试做:

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

看看是否有诀窍。

答案 1 :(得分:1)

请参阅CoreData application directory crashes on iOS3

Surfdev的建议在3.1.2

上工作正常

答案 2 :(得分:0)

Swift 3

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