我已阅读文档并按照本文中的步骤操作-
运行我的代码时仍然出现错误,如下所示
-(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“操作无法完成。(可可错误 256。)”用户信息 = 0xe09a880 {NSUnderlyingException = 无法打开数据库文件,NSSQLiteErrorDomain = 14}
但是数据库文件确实存在(在“elseif”中) - 所以不清楚问题是什么?