【发布时间】:2010-06-23 17:13:05
【问题描述】:
在 iPhone 上执行轻量级核心数据迁移时,我收到一些用户的以下错误:
{
NSUnderlyingError = Error Domain=NSPOSIXErrorDomain Code=17 UserInfo=0x2991d0
"Operation could not be completed. File exists";
destinationURL = file://localhost/var/mobile/Applications/AEFD8CE2-0AF6-4227-AB84-73E2F5D83F26/Documents/App.sqlite.new;
reason = "Can't copy source store to destination store path";
sourceURL = file://localhost/var/mobile/Applications/AEFD8CE2-0AF6-4227-AB84-73E2F5D83F26/Documents/App.sqlite;
}
这是迁移中断的结果吗?还是其他什么原因?无论如何,在尝试迁移之前手动删除 .new 数据库是否是适当的补救措施?
代码只是一个简单的轻量级迁移:
NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"App.sqlite"]];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
// convert automatically from prior models
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption,
nil];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error])
{
[MainAppDelegate printDetailedErrors:error];
}
更新:Apple 论坛的 BenT 告诉我这是一个 3.1.x 错误,但我还没有返回并使用我的错误日志数据验证这一点。
【问题讨论】: