根据枚举属性过滤NSMutableArray

时间:2010-06-13 19:10:33

标签: objective-c

我有一个NSMutableArray填充了“GameObject”类型的对象。 GameObject有许多属性,其中一个是“gameObjectType”。 “gameObjectType”的类型为GameObjectTypeEnum。我希望能够过滤此NSMutableArray,因此只返回某种类型的GameObjects。我已经有了以下内容,但它给了我一个“BAD ACCESS”错误:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"gameObjectType = %@", gameObjectType];
return [gameObjects filteredArrayUsingPredicate:predicate];

是否可以将“自定义”类型(即我已定义的这个枚举)传递给predicateWithFormat调用?

2 个答案:

答案 0 :(得分:22)

字符串格式说明符%@表示对象,而您传递的是整数值。您可能希望将gameObjectType强制转换为int并使用%d说明符。有关详细信息,请查看string format specifiers

答案 1 :(得分:7)

- (NSArray *)arrayFilteredByType:(enumType)type {

     //type is an NSUInteger property of the objects in the array 
     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type = %d", type];
     return [self.array filteredArrayUsingPredicate:predicate];
}