2017-03-06 8 views
0

私は、フレンドと呼ばれるNSManagedObjectサブクラスに関数を書いています。CoreData with SwiftとiOS 8以上でwillAccessValueForKey()が必要ですか?

func firstCharacterOfComputerDisplayName() -> String 
    { 
    guard let user = self.friend else { 
     return "" 
    } 
    return user.firstCharacterOfComputerDisplayName() 
    } 

またはその:

func firstCharacterOfComputerDisplayName() -> String 
    { 
    self.willAccessValue(forKey: "friend") 

    guard let user = self.primitiveValueForKey("friend") as? User else { 
     self.didAccessValue(forKey: "friend") 
     return "" 
    } 
    let dispName = user.firstCharacterOfComputerDisplayName() 
    self.didAccessValue(forKey: "friend") 
    return dispName 
    } 

答えて

0

willAccessValue(forKey:)primitiveValueForKey(_:)didAccessValue(forKey:)を使用するかどうかは関係ありません

は、私は(ユーザーが別のNSManagedObject ユーザーである)、これを書くべきかどうか疑問SwiftやiOS 8を使用するかどうかを決定します。厳密には、Core Dataのことです。 Core DataはKVOを使用してデータグラフの整合性などを維持しているため、変更とアクセスをいつ監視するかについて一定の期待があります。

ほとんどアクセサーメソッドをオーバーライドしないかぎり、これらのメソッドを気にする必要はありません。 self.friendの値を使用する場合は、self.friendと尋ねてください。 friendのアクセサーをオーバーライドしている場合を除き、あなたはここでそれをやっていません。

+0

私は非常に多くのドキュメンテーションとチュートリアル+リンゴの最近のiOSの会話を読みました。私は混乱しました。私の特定のケースでは、最初の解決策は友人が既にcoredataによって管理されているアクセサだからです。 – Mikael

関連する問題