我有两个实体的模型,比如说A
和B
。该模型从从互联网下载的sqlite文件中加载(符合Core Data的sqlite格式;即以'Z'开头的表和列)。iOS核心数据不执行轻量级迁移
我为我的模型添加了新版本;向实体B
引入默认值为零的非可选整数属性。出于某种原因,无论何时我查询该实体,我都会得到nil
结果,并且错误对象为no such column ZVERSION
(version
是新的属性名称),即使我在查询中没有使用version
也是如此。
什么可能是错的?
我有两个实体的模型,比如说A
和B
。该模型从从互联网下载的sqlite文件中加载(符合Core Data的sqlite格式;即以'Z'开头的表和列)。iOS核心数据不执行轻量级迁移
我为我的模型添加了新版本;向实体B
引入默认值为零的非可选整数属性。出于某种原因,无论何时我查询该实体,我都会得到nil
结果,并且错误对象为no such column ZVERSION
(version
是新的属性名称),即使我在查询中没有使用version
也是如此。
什么可能是错的?
您可以拥有一个名为'版本'的属性 - 它是保留的。来自苹果的文档:
请注意,属性名称不能与NSObject或NSManagedObject的任何非参数方法名称相同。例如,你不能给一个属性名称“description”。 NSObject上有数百种方法可能会与属性名称发生冲突 - 并且此列表可以在没有来自框架或其他库的警告的情况下增长。应该避免非常一般的话(如“字体”,和‘彩色’)和其与可可范式重叠(如‘isEditing’和‘objectSpecifier’)的单词或短语
(来源:https://developer.apple.com/reference/coredata/nspropertydescription)。
“版本”是存档用的NSObject的类方法: https://developer.apple.com/reference/objectivec/nsobject/1415151-version
而且核心数据之外创建一个SQL文件并导入它不支持苹果并没有公布它的sqlite的格式,你可能不也许苹果有一些ZVERION专栏,你不知道。
'也不支持在核心数据之外创建一个SQL文件并且不支持导入它'好吧,它可能没有记录,但这是可能的。见[this](https://www.raywenderlich.com/12170/core-data-tutorial-how-to-preloadimport-existing-data-updated)。 –