NSManaged Int16
属性设置为optional
,如下所示:NSManaged var durationType: Int16?
我收到编译器错误:
roperty cannot be marked @NSManaged because its type cannot be represented in Objective-C
optional
框,那么当从数据库中获取属性时,如何检查该属性是否具有值? 最佳答案
您可以将该属性设为 optional ,并将其保留为Int16
。关键是不需要@NSManaged
,但是如果删除它,则必须实现自己的访问器方法。
一种可能的实现:
var durationType: Int16?
{
get {
self.willAccessValueForKey("durationType")
let value = self.primitiveValueForKey("durationType") as? Int
self.didAccessValueForKey("durationType")
return (value != nil) ? Int16(value!) : nil
}
set {
self.willChangeValueForKey("durationType")
let value : Int? = (newValue != nil) ? Int(newValue!) : nil
self.setPrimitiveValue(value, forKey: "durationType")
self.didChangeValueForKey("durationType")
}
}
关于swift - 核心数据Int16是 optional ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30636583/