我已阅读文档并按照this post中的步骤进行操作 -
我仍然在运行代码时遇到错误,如下所示
-(void)loadPhotoGallery:(NSURL *)path
{
if (self.defaultPhotoLibrary != nil) return;
// this should handle auto migrations - according to documentation
NSURL * url;
if (path == nil)
{
url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"defaultPhotoDatabase"];
} else {
url = path;
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"Photos" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path1];
NSManagedObjectModel *managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel];
NSError *error;
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:options error:&error]) {
// Printing this error
NSLog(@"Problem with PersistentStoreCoordinator: %@",error);
}
UIManagedDocument *lib = [[UIManagedDocument alloc] initWithFileURL:url];
if (![[NSFileManager defaultManager] fileExistsAtPath:[lib.fileURL path]]) {
[lib saveToURL:lib.fileURL
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success)
{
// Great
} else {
//bad
}
}
else if (lib.documentState == UIDocumentStateClosed) {
[lib openWithCompletionHandler:^(BOOL success) {
if (success) // here is the failure when migrating - because the DB file exists
{
//great!
} else {
//bad - getting into this code
}
}
错误我得到:
PersistentStoreCoordinator问题:错误域= NSCocoaErrorDomain代码= 256“操作无法完成 . (Cocoa错误256.)”UserInfo = 0xe09a880 {NSUnderlyingException =无法打开数据库文件,NSSQLiteErrorDomain = 14}
但是数据库文件确实存在(进入“elseif”) - 所以不清楚问题是什么?