问题标签 [xcdatamodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - +entityForName:在此模型中找不到名为“EntityName”的实体
我知道这可能看起来像重复,但我尝试了几个答案,但所有这些都不起作用。
我正在尝试使用 Core Data 来存储已完成的级别,但是在保存数据时遇到了一些麻烦。在一个级别完成的那一刻,将调用以下行。
但我收到以下错误
“由于未捕获的异常‘NSInternalInconsistencyException’而终止应用程序,原因:‘+entityForName:无法在此模型中找到名为‘SucceededLevels’的实体。”
我已经在 .xcdatamodel 中设置了实体。
ios - 我什么时候应该增加 xcdatamodeld 版本?
有人请解释我什么时候应该增加 xcdatamodeld 版本?我google了很多,都有关于迁移的,但是我应该什么时候增加版本呢?
目前,如果我在我的 xcdatamodeld 中进行更改,例如添加实体或添加属性,我将重新创建 nsmanagedobject 子类。但是我不确定我必须增加xcdatamodeld版本的情况。请有人解释一下。谢谢!
ios - 无法在 Xcode 中打开数据模型文件
使用 MacOS Sierra(10.12.1 (16B2555)) 和 Xcode 8.1(8B62)。在没有选择“使用核心数据”的情况下创建了一个新项目。现在当我创建一个新的数据模型时,我无法在 Xcode 编辑器中打开它。
即使我右键单击,Open As->
也不显示任何选项。
我看了一下这个问题,但答案对我没有帮助。
我已经删除并重新添加了文件,甚至重新生成了数据模型。我已经清理了项目和构建文件夹。也致力于源代码控制,然后重试。甚至重新启动了 Xcode 和 Mac,但似乎没有任何效果。
我现在如何在我的项目中使用 Core Data?
core-data - Core Data 自动轻量级迁移失败
每次 Core Data 在我的应用程序(当前使用“Model 2.5”)中创建新版本的模型(我们称之为“Model 2.6”)后尝试进行自动轻量级迁移时,我都会崩溃。
我已经使用 Core Data 有一段时间了,我很清楚,每当我需要为新版本更改模型时,我必须使用“编辑器 --> 添加模型版本”,给那个版本一个新的标识符,并使用“当前版本”弹出窗口切换到该标识符。我熟悉“用于打开商店的模型与用于创建商店的模型不兼容”错误,因为我以前犯过这个错误。我相信我遇到了不同的问题,尽管收到了相同的错误消息。
在周末的大部分时间里我都反对这个之后,我希望有人以前见过这个并且可以提供一些明智的建议。
这是我触发问题的步骤:
- 重置模拟器,核对派生数据,清理构建并以 2.5 格式保存文件。
- 在 Xcode 中,编辑器 --> 添加模型版本...
- 使用该向导基于“Model 2.5”制作“Model 2.6”
- 将新人的标识符更改为“2.6”
- 对与自动轻量级迁移完全兼容的新版本做一些超级简单的事情,比如添加一个新实体。
- 在当前版本的弹出窗口下设置“模型 2.6”
- 在模拟器中重建和启动。打开我刚刚保存的 2.5 文件时崩溃。
到目前为止,我已经成功地管理了九个不同版本的文件格式更新,并且自动轻量级迁移始终完美无缺。
现在和上次的区别:
- 我的模型版本 2.5 是我第一次将“工具版本”设置为“自动(Xcode 8)”。所有以前的版本都将此设置为“Xcode 7.3”,因此这将是第一次从已经在“自动(Xcode 8)”上的模型版本进行迁移
- 我的 xcdatamodeld(因此也是 momd 文件)现在存在于我的共享框架中,而不是主机应用程序中(因此我可以在扩展程序、tvOS 等之间共享代码/资源),尽管我尝试撤消此更改以查看它是否是原因,并且错误仍然发生。
- 老实说,我不确定。这本应该是一个微不足道的长达一小时的任务,结果变成了两天令人头疼的事情。
这是调用后记录的实际错误
其中 storeOptions 是 { NSInferMappingModelAutomaticallyOption = 1; NSMigratePersistentStoresAutomaticallyOption = 1; } 并且由于某种原因有两个:一个用于文件 .Model.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3 另一个用于文件 Model.sqlite,大概是迁移过程的一部分。(代码=134 110,基础代码=134 100)
创建这个新版本时我是否遗漏了一些明显的东西?还有其他要清理的缓存或隐藏文件吗?我确实注意到,当创建一个新的 What.xcdatamodel 时,Xcode 中的“放弃所有更改...”会留下该文件,所以我要格外小心地删除测试运行并检查 Xcode 外部的“git status”。
我对错误消息持怀疑态度,因为我可以将 xcdatamodeld 的“当前版本”切换回 2.5,看到文件打开得很好,将“当前版本”切换到 2.6,看到它失败,然后以可预测的成功来回切换/失败。它显然能够打开 2.5 文档,只是在尝试将它们迁移到 2.6 时无法打开。
xcode - 使用重命名 ID 迁移后获取请求返回 nil
我的迁移有问题,例如:
版本1:
- 列 aa(重命名 ID:无)
- 列 bb(重命名 ID:无)
- cc 列(重命名 ID:无)
版本2:
- ab 列(重命名 ID:aa)
- 列 bb(重命名 ID:无)
- cc 列(重命名 ID:无)
版本 3:
- 列 ac(重命名 ID:ab)
- bc 列(重命名 ID:bb)
- cc 列(重命名 ID:无)
Wehn 我在我的版本 3 上做了一个 fetch 请求,我的列 ac 得到了 nil,但是其他两个也可以,我尝试了一些方法:删除我的第一列的版本 2 中的重命名 ID,并且在这里它可以工作!
所以我们不能再使用两次重命名ID?
objective-c - 与 xcdatamodel 一起使用时,BOOL 和 bool 可以互换吗?
我有一个使用 CoreData 的 iOS 应用程序;xcdatamodel有几个布尔属性。我的问题是:在我的 Objective-C 代码中,BOOL和bool在这些属性中是否可以互换?我编写代码的方式,逻辑取决于真或假(1,0),是的,我知道 BOOL 和 bool 之间的区别。
ios - 核心数据一对一的单向关系
我有 2 个实体,其中共有 12 个属性,其中某些特定类型的字段的最小值、最大值和平均值有 3 种变体。因此,我将 2 个实体重构为 3 个实体,使第 3 个实体成为“值”,其中包含 3 个属性,即最小值、最大值和平均值。并将 12 个属性减少为 4 个关系。这是我的模型的复制品,作为下图中的示例。
如您所见,我与第三个实体具有一对一的单向关系。但是 Xcode 一直在抱怨“反向”关系。
根据我的说法,我可以在“值”中添加 4 个关系并将所有关系更新为“反向”,但这似乎不是正确的解决方案,因为当第二个实体与“值”相关联时,它将有额外的 3 个nil 关系,而在第一个情况下,它将有 1 个额外的 nil 关系。这两个都是不必要的。
我相信重构“价值”并将其拆分为两个相似的实体也不是一个好的解决方案。
因此,任何人都可以建议我解决这个问题的正确方法或最佳实践是什么。如果我在描述我的问题时有任何不清楚的地方,请告诉我。