7
比方說,我有一個包含類型ID <形狀>的NSSet使用謂詞返回對象匹配給定類
的對象集合的NSSet中。 。 。其中有CircleShape,SquareShape,HexagonalShape實例放入其中(不是真正的協議或類名稱)。 。
是否可以使用謂詞或另一行代碼來返回CircleShape的所有實例?
比方說,我有一個包含類型ID <形狀>的NSSet使用謂詞返回對象匹配給定類
的對象集合的NSSet中。 。 。其中有CircleShape,SquareShape,HexagonalShape實例放入其中(不是真正的協議或類名稱)。 。
是否可以使用謂詞或另一行代碼來返回CircleShape的所有實例?
可以使用基於塊的謂詞是這樣的:
NSSet *yourSet = ...;
NSPredicate *pred = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
return [evaluatedObject isKindOfClass:[CircleShape class]];
}];
NSSet *filteredSet = [yourSet filteredSetUsingPredicate:pred];
這將返回的CircleShape
子類CircleShape
所有實例或。如果您只想要類的實例,但不想使用子類,請使用isMemberOfClass
。