Фильтрация NSMutableArray на основе свойства enum
У меня есть NSMutableArray, заполненный объектами типа "GameObject". GameObject имеет ряд свойств, один из которых является "gameObjectType". "gameObjectType" имеет тип GameObjectTypeEnum. Я хочу, чтобы иметь возможность фильтровать этот NSMutableArray, так что возвращаются только GameObjects определенного типа. У меня есть следующее место, но это дает мне ошибку "BAD ACCESS":
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"gameObjectType = %@", gameObjectType];
return [gameObjects filteredArrayUsingPredicate:predicate];
Можно ли передать "пользовательский" тип (т.е. это перечисление, которое я определил) в вызов predicateWithFormat?
Ответы
Ответ 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];
}