Cocoa 与 Core Data 相关的错误 19
Cocoa Error 19 related to Core Data
在过去的一天里,我一直在进行广泛的研究以解决我遇到的错误,但一直无法找到解决我的问题的方法。我的应用程序旨在将数据记录为 "datapoints" 中的 "recording" 并将这些对象存储在核心数据中。记录完成后(所有数据点和记录本身都已创建并添加到 MOC)我保存上下文:
- (void)saveContext
{
NSError *error;
if (self.managedObjectContext != nil) {
if ([self.managedObjectContext hasChanges] && ![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
同样,我在以前的项目中使用过这个确切的代码并且它运行顺利。但是,对于此项目,应用程序会调用 - (void)savecontext
中的 abort()
函数。调用abort()
时,显示如下错误:
CoreData: error: (19) PRIMARY KEY must be unique
Unresolved error Error Domain=NSCocoaErrorDomain Code=19 "The operation couldn’t be completed. (Cocoa error 19.)" UserInfo=0x155c6850 {NSSQLiteErrorDomain=19, NSUnderlyingException=error during SQL execution : PRIMARY KEY must be unique, NSFilePath=/var/mobile/Containers/Data/Application/9C5CB2CF-70C3-462B-BD26-E75AC4AF22E5/Documents/APPNAME.sqlite}, {
NSFilePath = "/var/mobile/Containers/Data/Application/9C5CB2CF-70C3-462B-BD26-E75AC4AF22E5/Documents/APPNAME.sqlite";
NSSQLiteErrorDomain = 19;
NSUnderlyingException = "error during SQL execution : PRIMARY KEY must be unique";
}
在项目进行到一半时,我更改了其中一个实体的名称。但是,我怀疑这是问题的根源,因为当这个问题出现时,我从头开始重新制作了整个数据模型和所有类别,但没有任何改变。
在我的研究中,我发现这个错误在使用数据预填充 SQLite 文件以加载到应用程序中的应用程序中非常常见。然而,我的应用程序并非如此,因此我发现 Stack Exchange 上针对此问题的所有解决方案都没有帮助,因为它们都专注于编辑这个预先存在的文件。
我对 Stack Exchange 也比较陌生,所以如果有任何我排除的信息,请告诉我,我会添加它。感谢您提供的任何帮助。
您正在保存的实体似乎有一些标记为唯一的字段,并且您试图用相同的值保存多个数据。你能post实体数据模型的截图吗?
问题是我一直试图在主线程之外使用 Core Data,但我没有研究它,所以我显然没有正确地做它。
在过去的一天里,我一直在进行广泛的研究以解决我遇到的错误,但一直无法找到解决我的问题的方法。我的应用程序旨在将数据记录为 "datapoints" 中的 "recording" 并将这些对象存储在核心数据中。记录完成后(所有数据点和记录本身都已创建并添加到 MOC)我保存上下文:
- (void)saveContext
{
NSError *error;
if (self.managedObjectContext != nil) {
if ([self.managedObjectContext hasChanges] && ![self.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
同样,我在以前的项目中使用过这个确切的代码并且它运行顺利。但是,对于此项目,应用程序会调用 - (void)savecontext
中的 abort()
函数。调用abort()
时,显示如下错误:
CoreData: error: (19) PRIMARY KEY must be unique
Unresolved error Error Domain=NSCocoaErrorDomain Code=19 "The operation couldn’t be completed. (Cocoa error 19.)" UserInfo=0x155c6850 {NSSQLiteErrorDomain=19, NSUnderlyingException=error during SQL execution : PRIMARY KEY must be unique, NSFilePath=/var/mobile/Containers/Data/Application/9C5CB2CF-70C3-462B-BD26-E75AC4AF22E5/Documents/APPNAME.sqlite}, {
NSFilePath = "/var/mobile/Containers/Data/Application/9C5CB2CF-70C3-462B-BD26-E75AC4AF22E5/Documents/APPNAME.sqlite";
NSSQLiteErrorDomain = 19;
NSUnderlyingException = "error during SQL execution : PRIMARY KEY must be unique";
}
在项目进行到一半时,我更改了其中一个实体的名称。但是,我怀疑这是问题的根源,因为当这个问题出现时,我从头开始重新制作了整个数据模型和所有类别,但没有任何改变。
在我的研究中,我发现这个错误在使用数据预填充 SQLite 文件以加载到应用程序中的应用程序中非常常见。然而,我的应用程序并非如此,因此我发现 Stack Exchange 上针对此问题的所有解决方案都没有帮助,因为它们都专注于编辑这个预先存在的文件。
我对 Stack Exchange 也比较陌生,所以如果有任何我排除的信息,请告诉我,我会添加它。感谢您提供的任何帮助。
您正在保存的实体似乎有一些标记为唯一的字段,并且您试图用相同的值保存多个数据。你能post实体数据模型的截图吗?
问题是我一直试图在主线程之外使用 Core Data,但我没有研究它,所以我显然没有正确地做它。