我正在關注Core Data Utlity Tutorial以瞭解爲使Core Data正常工作所需的基礎工作。此實用程序會創建一個Core Data存儲,並在每次運行時保存進程ID和運行日期&。它還顯示以前的運行細節。爲什麼primitiveDate是在Core Data Utility教程中定義的?
一切都很好,直到託管對象類被定義。它定義如下:
@interface Run : NSManagedObject
{
NSInteger processId;
}
@property (assign) NSInteger processId;
@property (retain) NSDate* date;
@property (retain) NSDate* primitiveDate;
@end
它定義了2個不同的日期屬性。教程還定義了在插入新對象時設置primitiveDate
的方法。
- (void) awakeFromInsert {
[super awakeFromInsert];
self.primitiveDate = [NSDate date];
}
我不明白爲什麼我們設置primitiveDate
代替date
財產。我甚至不知道爲什麼我們需要的是date
和processId
,甚至定義了primitiveDate
。我嘗試在各行之間閱讀(閱讀完所有行後),但仍無法獲取。請你幫忙嗎?我不知道我錯過了什麼。
感謝您的回答。但是如何設置'primitiveDate'也設置'date'呢?沒有地方我們正在設置日期,但它似乎被設置,保存和檢索正確? – Hemant
在一個託管對象中,屬性的標準訪問函數'foo'和'setFoo:'涉及大量的魔力。所以,當你想修改一個託管對象的行爲時,你需要使用'primitiveFoo'和'setPrimitiveFoo:',它不涉及奇特的魔法。但是兩者都指向相同的屬性'foo'。閱讀http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html#//apple_ref/doc/uid/TP40002154-SW1。 – Yuji
哦,天哪!是**那**嗎?我認爲這是完全不同的財產。感謝您清除它。我陷入了一片灼熱的地獄。 (這些神奇的東西在編程中是雙刃劍。) – Hemant