如何使 NSManaged public var 成为可选的 bool 值?当我输入以下内容时:

import Foundation
import CoreData
import UIKit

extension SomeClass {

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

}

我收到错误:

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

我想要的是一个既不能是 liked 也不能是 disliked 的属性。

最佳答案

如果您使用 @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")
    }
}

关于swift - 使 "NSManaged public var"成为可选 bool 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45419748/

10-10 21:07