【发布时间】:2012-06-15 19:36:35
【问题描述】:
我正在尝试使用以下方法将 sqlite DB 添加到应用程序中:CoreData: Preload Data in Your iOS App
按照教程我遇到了一个问题:
[NSFileManager copyItemAtPath:toPath:error:]: source path is nil
我使用以下代码:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if (__persistentStoreCoordinator != nil) {
return __persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Peter_R0_1.sqlite"];
if(![[NSFileManager defaultManager] fileExistsAtPath:[storeURL path]]) {
NSString *sqlitePath = [[NSBundle mainBundle] pathForResource:@"Peter_R0_1" ofType:@"sqlite" inDirectory:nil];
NSError *anyError = nil;
BOOL success = [[NSFileManager defaultManager] copyItemAtPath:sqlitePath toPath:[storeURL path] error:&anyError];
}
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return __persistentStoreCoordinator;
}
非常感谢您对这个问题的帮助
【问题讨论】:
-
您是否记得将
Peter_R0_1.sqlite文件添加到您的项目中?它是否显示在项目的构建阶段中的Copy Bundle Resources下? -
是的,我已将 sqlite DB 添加到项目中。
标签: objective-c core-data nsfilemanager