制作“NSManaged public var”可选布尔值
问题描述:
如何使NSManaged public var
成为可选的布尔值?当我键入以下内容:制作“NSManaged public var”可选布尔值
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
。只要你实现自己的访问器,你可以放弃它。例如:
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")
}
}