2011-04-24 25 views
0

在我的項目中,它完全用Core Data和綁定編寫,我有兩個包含浮點值的文本字段。我想創建第三個文本字段,它是第一個字段除以第二個字段。使用核心數據的最佳途徑是什麼?我應該爲第三個域創建一個自定義訪問器嗎?核心數據除以兩個值

回答

2

製作方法-thirdValue在NSManagedObject子類,不計算:

- (CGFloat)thirdValue 
{ 
    return value1/value2; // should probably do a value2 != 0 check 
} 

,然後+ keyPathsForValuesAffectingValueForKey該類:

+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key 
{ 
    NSSet *superSet = [super keyPathsForValuesAffectingValueForKey:key]; 

    if ([key isEqualToString:@"thirdValue"]) 
     return [[NSMutableSet setWithObjects:@"value1", @"value2", nil] unionSet:superSet]; 

    return superSet; 
} 

此設置thirdValue依賴於value1和值2。每當value1或value2發生變化時,還會有thirdValue的KVO通知。所以如果你有一個綁定到它的字段,這個字段會顯示新的計算值。當您需要顯示值取決於其他鍵的鍵時,這是一個非常方便的技巧。

+0

調用'super'並將返回的集合與正在創建的集合合併,或者如果鍵不是thirdValue,則返回'super'返回的集合。 – 2011-04-24 07:27:46

+0

真,回答編輯這個加法。原文是網站編輯寫的一個快速而骯髒的答案。 – McCygnus 2011-04-24 08:31:08