2017-07-31 3 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? 

} 

を私はエラーを取得:

そのタイプはObjective-Cで

を表すことができないため、プロパティは、私が欲しいもの@NSManagedマークすることはできませんがプロパティですlikedまたはdislikedのいずれでもない可能性があります。

答えて

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") 
    } 
} 
関連する問題