与 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 自动保存

如何在 Cocoa 文本输入系统中使用 Core Data?

Cocoa Touch 从 Core Data 更新 UITableView

带有命令行界面的 Core Data Cocoa 应用程序

带有 Core Data 的 Cocoa pod 在消费应用程序中找不到实体