Подтвердить что ты не робот

Фильтрация NSMutableArray на основе свойства enum

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

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

Можно ли передать "пользовательский" тип (т.е. это перечисление, которое я определил) в вызов predicateWithFormat?

4b9b3361

Ответ 1

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

Ответ 2

- (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];
}