我仍然試圖讓我的頭在如何選擇器和動態類型工作在目標c。我基本上是試圖實現這種方法(在Python /僞代碼,同樣的事情真的如下圖所示:P)如何根據屬性值/如何使用選擇器來確定對象是否在數組中?
def isInArray(value, array, test):
for item in array:
if test(item) == value:
return True
return False
test = lambda obj: obj.property
我預期的Objective-C代碼爲:
+ (BOOL)value:(id)value:
isInArray:(NSMutableArray *)array
usingSelector:(SEL)selector {
for (id item in array) {
if (value == [item selector]) {
return YES;
}
}
return NO;
}
但是,這將引發編譯錯誤,抱怨我在if語句中比較兩個指針類型(id和SEL)
不應該如果語句是比較對象值與在對象arritem上運行SEL選擇器返回的對象嗎?換句話說,它爲什麼認爲它比較了o與SEL對象(我不明白什麼會返回一個SEL)
謝謝,我知道我錯過了一些明顯的東西! – sapi 2012-01-06 09:22:23