使“NSManaged public var”成为可选布尔值

ale*_*wis 4 core-data nsmanagedobject swift

我怎样才能做NSManaged public var一个可选的布尔值?当我输入以下内容时:

import Foundation
import CoreData
import UIKit

extension SomeClass {

    @NSManaged public var isLiked: Bool?
    @NSManaged public var isDisliked: Bool?

}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

属性不能被标记为@NSManaged 因为它的类型不能在 Objective-C 中表示

我想是可以既不是财产likeddisliked

Tom*_*ton 5

如果使用@NSManaged,则必须遵守其规则。这些规则包括使用没有选项的 ObjC。但是您不必使用@NSManaged,即使在使用 Core Data 时也是如此。只要您实现自己的访问器,就可以删除它。就像是:

public var isLiked : Bool? {
    get {
        willAccessValue(forKey: "isLiked")
        let isLiked = primitiveValue(forKey: "isLiked") as! Int64
        didAccessValue(forKey: "isLiked")
        return isLiked
    }
    set {
        willChangeValue(forKey: "isLiked")
        setPrimitiveValue(newValue, forKey: "isLiked")
        didChangeValue(forKey: "isLiked")
    }
}
Run Code Online (Sandbox Code Playgroud)