gpt4 book ai didi

iphone - 添加新属性时 CoreData 无法完成错误

转载 作者:行者123 更新时间:2023-12-03 19:42:52 25 4
gpt4 key购买 nike

当我尝试访问新数据模型中的新属性时,收到“CoreData 无法满足...的错误”错误消息。如果我使用新数据,我没问题,但是当我尝试读取现有数据时,我收到错误。如果该属性不在我的原始数据中,我是否需要自己以不同的方式处理该实体?我的印象是 Core Data 可以为我处理这个问题。我的新属性被标记为可选,并具有默认值。

我创建了一个新的 .xcdatamodel(并将其设置为当前版本)并更新了我的 NSPersistentStoreCoordinator 初始化以利用轻量级迁移,如下所示:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:      
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self managedObjectModel]];

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:storeUrl options:options error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}

感谢任何帮助。

更新:经过更多挖掘后,我将 ManagedObjectModel 更新为:

- (NSManagedObjectModel *)managedObjectModel {

if (managedObjectModel != nil) {
return managedObjectModel;
}
//managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

NSString *path = [[NSBundle mainBundle] pathForResource:@"< MyModel >" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];

return managedObjectModel;
}

这仍然没有解决我的问题。我已经清理并重建,但仍然没有爱。

最佳答案

你如何构建你的NSManagedObjectModel?如果您向它传递一个可能会导致问题的特定文件,因为您可能正在加载项目中徘徊的较旧的原始 mom 文件。理想情况下,您现在应该加载 momd 包或仅使用以下命令加载包中的所有编译模型:

NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];

如果您收到错误,则表明您需要清理项目以摆脱陈旧的编译模型。

更新

由于这不是旧模型问题,因此我们转向下一种可能性。 plist 中的版本设置不正确。要检查这一点,请使用 finder 或终端查看 momd 包的内部并打开其中的 plist。检查以确认新模型确实设置为当前版本。

假设这不起作用,接下来在模拟器中运行您的应用程序并在创建 MOC 后立即保存它。之后,使用命令行工具打开 sqlite3 文件并检查架构以查看其是否已更新为新结构。

假设设置正确,您是否使用自定义 NSManagedObject 子类?

关于iphone - 添加新属性时 CoreData 无法完成错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com