用于打开存储的模型配置与用于创建存储的模型配置不兼容

时间:2016-10-31 10:18:51

标签: ios swift xcode core-data

嘿,我继续在

行获得这个不良访问权限
try managedContext.save()

代码运行完美,直到它试图保存我的价值。我认为这可能是因为我正在使用" copy"实体而不是实际实体。但这是不可靠的,因为你无法在代码中动态编辑orignal模型。所以我所要做的就是在尝试" .save()"时停止这种不良访问。我很好。它位于第4行的最后一行。

所以基本上在使用try managedContext.save()时。我创建了一个会打印错误的catch。所以我把"!"来自"尝试"的符号所以我可以看到为什么应用程序抛出错误,这就是我得到的

致命错误:'尝试!'表达式意外地引发了错误:错误Domain = NSCocoaErrorDomain Code = 134020"用于打开商店的模型配置与用于创建商店的模型配置不兼容。"

Picture of Error

代码:

let appDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
let managedContext: NSManagedObjectContext =  appDelegate.managedObjectContext

var properties0 = Array<NSAttributeDescription>()

let playersList0 = NSEntityDescription.entityForName("PlayersList1", inManagedObjectContext: managedContext)

let copy = playersList0!.copy() as! NSEntityDescription

let contentTypeAttribute0 = NSAttributeDescription()
contentTypeAttribute0.name = "firstName"
contentTypeAttribute0.attributeValueClassName = "firstName"
contentTypeAttribute0.attributeType = .StringAttributeType
contentTypeAttribute0.optional = true
properties0.append(contentTypeAttribute0)


copy.properties = properties0

let playerslistCopyto = NSManagedObject(entity: copy, insertIntoManagedObjectContext: managedContext)

playerslistCopyto.setValue("John", forKey: "firstName")



do {
    try managedContext.save()
} catch {
    print("Error") //prints Error everytime
}

这打印&#34;错误&#34;每次都是抓住。我基本上只需要找出如何保存&#34;复制&#34;

3 个答案:

答案 0 :(得分:0)

抱歉,这是一条旧消息,但似乎没有很多有用的答案。 上周我确实遇到了类似的错误:

Error Domain=NSCocoaErrorDomain Code=134020 "The model configuration used to open the store is incompatible with the one that was used to create the store." UserInfo={problemObject=<CachedWeightedRegularJourney: 0x6000023c5130> (entity: CachedWeightedRegularJourney; id: 0x6000002605e0 <x-coredata:///CachedWeightedRegularJourney/t05BA08BA-E646-44D9-8B36-713C5B4499629>; data: {
    destinationURN = "urn:trainline:generic:loc:1183";
    originURN = "urn:trainline:generic:loc:4916";
    weight = 1;
})}

在我的案例中,根本原因是在模型中添加新实体之前,我没有看到我的模型包含多个配置。因此,仅添加实体而不将其添加到正确的模型配置中会使保存失败。保存时似乎发生的事情是协调器丢失了,因为它找不到要保存更改的持久性存储。

我的解决方案: 我将新实体拖放到模型编辑器中的正确配置。

答案 1 :(得分:-1)

出现此错误是因为您有一个与当前尝试访问的数据库模型不同的数据库模型,它很可能需要迁移。之所以发生这种情况,是因为您使用模型创建并保存了数据,然后进行了编辑(例如,添加,删除或重命名),然后尝试访问数据存储而不执行迁移。我的建议是,如果您还没有发布应用程序,请删除数据库(卸载应用程序),然后重试。您可以做的另一件事是告诉核心数据进行轻量级迁移。 Apple有一个很好的教程,代码为here

答案 2 :(得分:-1)

您必须已编辑模型文件。您需要进行自动迁移。 The Ray Wenderlich tutorial就足够了。

您从中读取的NSEntityDescription不是您现在用来尝试保存的,而且Core Data阻止您创建未迁移的混乱。您是否编辑了模型名称或在此过程中的某处更改了数据类型?