iphone - coredata 应用程序目录
Posted
技术标签:
【中文标题】iphone - coredata 应用程序目录【英文标题】:iphone - coredata application directory 【发布时间】:2011-01-14 21:05:17 【问题描述】:我将这个 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 尝试使用商店 URL 时
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!
有什么线索吗?谢谢
【问题讨论】:
【参考方案1】:尝试做:
NSString *pathToYourSqliteFile = @"/your/path/here";
NSURL *storeURL = [NSURL fileURLWithPath: isDirectory:NO];
看看这能不能解决问题。
【讨论】:
我的应用程序部署目标是 8.0,这对它有用!谢谢!【参考方案2】:见CoreData application directory crashes on iOS3
Surfdev 的建议在 3.1.2 上运行良好
【讨论】:
【参考方案3】:斯威夫特 3
let documentsUrl = FileManager.default.urls(for: .documentDirectory, in:.userDomainMask).first!
【讨论】:
以上是关于iphone - coredata 应用程序目录的主要内容,如果未能解决你的问题,请参考以下文章
使用 GameKit 通过 NSDictionary 在 iPhone 之间传输 CoreData 数据
为 iPhone/CoreData 中未解决的错误替换 aborts()
Coredata iPhone 到带有 iCloud 的 iPad/Mac?