我有几个关于核心数据迁移的问题,我似乎找不到答案。
NSKeyedUnarchiveFromDataTransformerName的警告)。我是否需要创建一个新模型并为此进行轻量级迁移?或者这不会影响模型中的任何东西吗?谢谢。
发布于 2021-03-03 23:23:09
核心数据通过比较版本哈希来决定是否需要模型迁移。数据模型有一个,当您创建持久存储时,版本哈希将保存在存储文件中。任何时候,它们都是不同的,迁移是必要的。迁移之后,将更新存储文件的散列以匹配新模型。
版本散列唯一重要的事情是影响如何设置SQLite数据库的事情。如果更改某些内容意味着SQLite模式的更改,则版本哈希将发生更改。这不包括转换器名称。如果您对详细解释感兴趣,请在versionHash、NSPropertyDescription、NSAttributeDescription和NSRelationshipDescription上查找该属性
您还可以添加您自己的版本哈希修饰符字符串,以强制版本哈希更改,如果您出于某种原因想要强制迁移。
对于简单的迁移,Core数据比过去更加宽容。默认情况下,带有自动映射模型生成的轻量级迁移是活动的(默认情况下,shouldMigrateStoreAutomatically和shouldInferMappingModelAutomatically都是正确的)。除非您特别关闭它,否则轻量级迁移只在需要时发生。保持不同的模型版本仍然是一个好主意,如果只是跟踪项目随时间的变化,但如果你不这样做,它将经常工作。
https://stackoverflow.com/questions/66452074
复制相似问题