我将这个Xcode模板用于核心数据.
在委托上,我有这个方法:
- (NSURL *)applicationDocumentsDirectory {
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
Run Code Online (Sandbox Code Playgroud)
但这需要iOS4.
我正在尝试使应用程序与3.0兼容.
所以,我已将此方法转换为:
- (NSURL *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [NSURL URLWithString:documentsDirectory];
}
Run Code Online (Sandbox Code Playgroud)
但是当coredata尝试使用商店网址时
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MyFile.sqlite"];
if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
Run Code Online (Sandbox Code Playgroud)
它会在IF行崩溃并显示以下消息:
CoreData SQL仅存储支持文件URL(已获得/var/mobile/Applications/BB312A7E-6AE1-4BA2-AD87-6B96D8855CC6/Documents/MyFile.sqlite).
但是StoreURL是一个NSURL!
有线索吗?谢谢
Dan*_* K. 27
尝试做:
NSString *pathToYourSqliteFile = @"/your/path/here";
NSURL *storeURL = [NSURL fileURLWithPath: isDirectory:NO];
Run Code Online (Sandbox Code Playgroud)
看看是否有诀窍.