0
在我的項目中,它完全用Core Data和綁定編寫,我有兩個包含浮點值的文本字段。我想創建第三個文本字段,它是第一個字段除以第二個字段。使用核心數據的最佳途徑是什麼?我應該爲第三個域創建一個自定義訪問器嗎?核心數據除以兩個值
在我的項目中,它完全用Core Data和綁定編寫,我有兩個包含浮點值的文本字段。我想創建第三個文本字段,它是第一個字段除以第二個字段。使用核心數據的最佳途徑是什麼?我應該爲第三個域創建一個自定義訪問器嗎?核心數據除以兩個值
製作方法-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通知。所以如果你有一個綁定到它的字段,這個字段會顯示新的計算值。當您需要顯示值取決於其他鍵的鍵時,這是一個非常方便的技巧。
調用'super'並將返回的集合與正在創建的集合合併,或者如果鍵不是thirdValue,則返回'super'返回的集合。 – 2011-04-24 07:27:46
真,回答編輯這個加法。原文是網站編輯寫的一個快速而骯髒的答案。 – McCygnus 2011-04-24 08:31:08