gpt4 book ai didi

iOS:核心数据错误:NSManagedObject 的 NSMergeConflict

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:44 26 4
gpt4 key购买 nike

我有一个文章与类别的多对多关系的核心数据。尝试保存时,出现以下错误。我无法找到有关它的含义以及为什么在数据库为空时有两个版本的信息。任何人都可以解释一下吗?

错误:NSMergeConflict (0x76ae720) for NSManagedObject (0xd945560) with objectID '0xd943550 <x-coredata://09A438A8-E3F5-45FE-B9D7-106798E82E18/Article/p91>' with oldVersion = 1 and newVersion = 2

代码:

NSMutableDictionary *dict   = [[data objectAtIndex:i] valueForKey:@"category_names"];
NSMutableArray *values = [[NSMutableArray alloc] init];
for (NSString *value in [dict allValues]) {
NSLog(@"value = %@", value);
[values addObject:value];
}

NSMutableSet *setElements = [[NSMutableSet alloc] init];
for (int i = 0; i < [values count]; i++) {
Category *cat = [self getCategoryFor:[values objectAtIndex:i]]; // Function which has fetch to get the category for the value "name"
[setElements addObject:cat];
}

if ([setElements count] > 0)
[article addCategories:setElements];


// Save the context.
NSError* error;
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
} else
NSLog(@" %@", [error userInfo]);
}

[article release];
[values release];
[setElements release];

最佳答案

您得到的错误实际上与数据本身无关,而是由于将两个不可调和的数据模型版本写入同一个持久存储文件引起的。

您必须已经创建了一个数据模型,使用它将一些数据写入持久存储,然后更新模型。这通常不是问题,除非您更改数据模型以致于自动迁移无法合并新旧数据。

如果它仍在开发中并且您不需要现有数据,最简单的解决方案是从模拟器中删除该应用程序,然后仅使用最新的数据模型再次构建和运行它。这将不需要迁移,因此将跳过合并错误。

关于iOS:核心数据错误:NSManagedObject 的 NSMergeConflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206335/

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