如何在保存时基于另一个Core Data属性设置Core Data属性?

时间:2017-07-24 14:19:06

标签: core-data swift3

当我设置/更改同一实体上的另一个属性时,我想更新实体上的Core Data属性...当我使用它时,必须在数据库中设置属性(不是Transient?)请求和排序数据时(不想动态生成数据 - 以避免内存消耗)。

我的实体的自动生成的核心数据扩展程序如下所示,被称为“我的对象”。 (* + CoreDataProperties.swift)

extension MyObject {
  ::
  @NSManaged public var number: String?
  @NSManaged public var numberRaw: Int64
  ::
}

我想弄清楚如何设置' numberRaw'的属性。无论什么时候“#”数字'属性是在我自己的扩展中设置的 - 覆盖似乎不可能(?)

extension MyObject {
  private var dummy: Int64 {
    get {
        self.willAccessValue(forKey: #keyPath(MyObject.numberRaw))
        let number = self.primitiveValue(forKey: #keyPath(MyObject.numberRaw)) as? Int64
        self.didAccessValue(forKey: #keyPath(MyObject.numberRaw))
        return number
    }
    set {
        self.willAccessValue(forKey: #keyPath(MyObject.number))
        let number = self.primitiveValue(forKey: #keyPath(MyObject.number)) as! String!
        self.didAccessValue(forKey: #keyPath(MyObject.number))

        self.willChangeValue(forKey: #keyPath(MyObject.numberRaw))
        var value: Int64 = 0
        if let digits = number?.digits, digits.isEmpty == false {
            value = Int64(digits)!
        }
        self.setPrimitiveValue(value, forKey: #keyPath(MyObject.numberRaw))
        self.didChangeValue(forKey: #keyPath(MyObject.numberRaw))
    }
  }
}

(我没有在代码中引用'虚拟'对象)

只有'号码'属性已设置/更改。 ' numberRaw'属性只是读取(代码和NSFetchRequest)

0 个答案:

没有答案