1
我有一個核心數據項目與一種「主」實體持有年值(INT 16)和一些其他值。還有一些其他的「孩子」實體與這位主人有多對一的關係。在其他實體之一中,我想設置幾個默認值,這是一個開始日期和結束日期。默認值應該是分配給主實體的年份的開始和結束。所以我用這個:核心數據valueForKeyPath返回0
- (void) awakeFromInsert {
int currentYear = [[self valueForKeyPath: @"master.year"] intValue];
NSString *currentYearStart = [NSString stringWithFormat: @"%d-01-01 00:00:01 +0000", currentYear];
NSString *currentYearEnd = [NSString stringWithFormat: @"%d-12-31 23:59:59 +0000", currentYear];
[self setStartDate: [NSDate dateWithString: currentYearStart]];
[self setEndDate: [NSDate dateWithString: currentYearEnd]];
}
當我運行此,currentYear最終總是爲0,即使大師的「年」屬性的值是2011年。我試過設置「INT currentYear = 2011」然後代碼按預期工作,所以問題似乎在第一行。奇怪的是,在NSManagedObject的主實體的子類中,我有如下行:
float total = [[self valueForKeyPath: @"[email protected]"] floatValue];
並且總是返回正確的數量。我看不出有什麼不同。其他人可以嗎?
調用[super awakeFromInsert]似乎沒有改變任何東西。此外,通過單擊按鈕添加和刪除子對象,添加和刪除按鈕綁定到的NSArrayController將其內容設置爲master.selection.child,因此,在執行awakeFromInsert調用時,主設備必須存在。 – LighteningKid
你確定嗎?如果你在那裏登錄'''[self valueForKeyPath:@「master」]'''會發生什麼?那麼'''[self valueForKeyPath:@「master.year」]'''? –
那麼,你可能是對的,但我仍然不明白。日誌給我 2011-12-03 18:00:00 24.860 MyProg [1565:707] master =(null) 2011-12-03 18:00:00 26.024 MyProg [1565:707] master.year =(null ) 但是,添加按鈕綁定到「可以添加」的子陣列控制器,就像我說的,數組控制器綁定到master.selection.child。所以「canAdd」不是真的,直到master有一個選擇,這意味着master.year存在於這一點......我很困惑。 – LighteningKid