与 Core Data 相关的 Cocoa 错误 19
Posted
技术标签:
【中文标题】与 Core Data 相关的 Cocoa 错误 19【英文标题】:Cocoa Error 19 related to Core Data 【发布时间】:2015-01-21 05:24:57 【问题描述】:过去一天我一直在进行广泛的研究以解决我遇到的错误,但一直无法找到解决问题的方法。我的应用程序旨在将数据记录为“记录”中的“数据点”,并将这些对象存储在核心数据中。录制完成后(所有数据点和录制本身都已创建并添加到 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 也比较陌生,所以如果有任何我排除的信息,请告诉我,我会添加它。感谢您提供的任何帮助。
【问题讨论】:
您在应用程序中使用 iCloud 吗?此外,了解有关如何创建这些对象的一些信息也会有所帮助。 不,@Tom,我根本不使用 iCloud。我会尝试用更多信息编辑帖子。 【参考方案1】:您正在保存的实体似乎有一些标记为唯一的字段,并且您尝试保存具有相同值的多个数据。可以发一张实体数据模型的截图吗?
【讨论】:
Core Data 没有唯一值的概念。【参考方案2】:问题是我一直试图在主线程之外使用 Core Data,但我没有研究过它,所以我显然没有正确地做到这一点。
【讨论】:
以上是关于与 Core Data 相关的 Cocoa 错误 19的主要内容,如果未能解决你的问题,请参考以下文章
[Cocoa]深入浅出 Cocoa 之 Core Data- 框架详解
如何在 Cocoa 文本输入系统中使用 Core Data?