Фильтрация NSMutableArray на основе свойства enum - PullRequest
18 голосов
/ 13 июня 2010

У меня есть NSMutableArray, заполненный объектами типа "GameObject".GameObject имеет ряд свойств, одним из которых является «gameObjectType»."gameObjectType" имеет тип GameObjectTypeEnum.Я хочу иметь возможность фильтровать этот NSMutableArray, чтобы возвращались только объекты GameObject определенного типа.У меня есть следующее на месте, но это дает мне ошибку «BAD ACCESS»:

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

Можно ли передать «пользовательский» тип (т. Е. Это перечисление, которое я определил)вызов предиката с форматом?

Ответы [ 2 ]

22 голосов
/ 13 июня 2010

Спецификатор формата строки %@ указывает объект, пока вы передаете целочисленное значение.Возможно, вы захотите типизировать gameObjectType к int и использовать спецификатор %d.Посмотрите на спецификаторы формата строки для получения дополнительной информации.

7 голосов
/ 24 ноября 2015
- (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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...