• 在Swift中,如何将NSManaged Int16属性设置为optional,如下所示:
    NSManaged var durationType: Int16?
    我收到编译器错误:roperty cannot be marked @NSManaged because its type cannot be represented in Objective-C
  • 如果这不可能,并且我在Core Data模型编辑器中选中了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/

    10-10 23:31