2009-06-11 1 views
4

私はPostと呼ばれるコアデータエンティティを持っています。その属性の1つはupdatedと呼ばれ、日付です。格納されているXMLは次のようになります。コアデータバグの可能性があります: 'updated'という名前の属性が正しく機能しませんか?

<attribute name="updated" type="date">266164481.00000000000000000000</attribute> 

これからデータが正しく格納されていると判断しました。私がデータを読み取ったとき、返された値はであり、NSDateではありません。

ただし、名前をupdatedからpubDateに変更したとき、正しく機能しました。 updatedNSManagedObjectまたはNSObjectのヘッダーで宣言されていないため、プライベートメソッドである必要があります。

誰もこれを経験していますか?私はそれをAppleに報告すべきでしょうか?

私は数時間の頭の傷/汚れた口の怒りの後でこれを理解しました。

+0

ココアの規約では、-updatedはおそらくそのようなプロパティの名前ではないことに注意してください。 -dateUpdatedまたは-updatedDateの代わりに –

答えて

7

NSManagedObjectはすでにオブジェクトがまだコミットされていない変更がある場合YESに設定されているisUpdatedというプロパティを持っています。これはBOOL値のゲッターの有効な名前なので、Core Dataはupdatedプロパティで何も処理していません。プロパティの名前を変更する必要があります。

+5

を参照してください。コアデータで避けるべき名前の一覧については、こちらを参照してください。http://developer.apple.com/documentation/Cocoa/Conceptual/CoreData/Articles/cdManagedObjects.html#//apple_ref/doc/uid/TP40003397-235678 – catsby

+0

私はCocoaが 'is'接頭辞付きのメソッドをチェックしていることに気付きませんでした。 私はちょうどキーと 'set' +キーと同じ名前のメソッドをチェックしましたが。 –

+0

これらの詳細については、Key Value Coding Programming Guideを参照してください。https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/KeyValueCoding.html –

3

プロパティの名前を変更することはオプションではない場合、マッピングモデルで値式をFUNCTION($source, "updated")に設定することができます。これにより、更新されたプロパティ(たとえばentity.updatedではなく[entity updated])ではなく、「更新済み」という名前のメソッドを使用して移行されます。

一般的には、「更新済み」以外の名前を使用できる場合は、受け入れられた回答に同意します。

関連する問題