【问题标题】:Cocoa Error 19 related to Core Data与 Core Data 相关的 Cocoa 错误 19
【发布时间】: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。我会尝试用更多信息编辑帖子。

标签: ios objective-c sqlite core-data


【解决方案1】:

您正在保存的实体似乎有一些标记为唯一的字段,并且您尝试保存具有相同值的多个数据。可以发一张实体数据模型的截图吗?

【讨论】:

  • Core Data 没有唯一值的概念。
【解决方案2】:

问题是我一直试图在主线程之外使用 Core Data,但我没有研究过它,所以我显然没有正确地做到这一点。

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    相关资源
    最近更新 更多