ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

setPrimitiveValue(_:forKey:)でhasChangesにならない

CoreDataでdynamic propetyが作られる。

@NSManaged public var name: String?

素のままではなく加工して使いたい場合にdynamic propetyの代わりにprimitiveValueやsetPrimitiveValueを使う。

    @objc
    public var name: String {
        get {
            return primitiveValue(forKey: "name") as? String ?? ""
        }
        set {
            setPrimitiveValue(newValue, forKey: "name")
        }
    }

setPrimitiveValue()の後にNSManagedObjectContext.hasChangesがtrueになるはずがならない。

先日まで問題なかった気がするが、最近の変更でどこか変わってしまったか?

primitiveValue、setPrimitiveValueは使わない様に修正するしかないか。