仅在某些设备上出现核心数据标量错误

Tim*_*Tim 19 core-data ios swift

我一直在测试主要使用iPhone 6,6 plus和iPad.刚刚在iPhone 5模拟器上尝试了我的应用程序,并收到了Core Data错误.

CoreData:error:属性'setId:'是类'AppName.EntityName'上的标量类型,与其Entity属性的标量类型不匹配.动态生成的访问器不支持隐式类型强制.无法为其生成setter方法

现在,我的应用程序中没有'setId'对象,但当然实体确实有一个'ID'对象,它被设置为int.

class Entity: NSManagedObject {
    @NSManaged var id: Int
}
Run Code Online (Sandbox Code Playgroud)

在Core Data模型中,属性类型设置为Integer64.这可能是我的问题,因为我在不知道什么是最好的情况下选择了它.我在模型和类中有其他属性,但它们都是字符串.

寻找修复和解释为什么这只发生在某些设备上,所以我可以学习!

Mar*_*n R 33

如果Core Data类型是Integer 64,那么您应该将该属性声明为Int64(或让Xcode创建托管对象子类).

Int 可以是32位或64位,具体取决于处理器架构.

或者,将属性定义为NSNumber*标量属性而不是标量属性.当然,您必须注意在32位平台上的值不超过范围Int.