2017-07-31 46 views
0

如何使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的

我要的是一个属性既不可以是likeddisliked

回答

3

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