2010-06-13 12 views
17

"GameObject" türünde nesnelerle dolu bir NSMutableArray var. GameObject, bir tanesi "gameObjectType" olmak üzere bir dizi özelliğe sahiptir. "gameObjectType", GameObjectTypeEnum türündendir. Bu NSMutableArray'ı filtrelemek istiyorum, böylece sadece belirli bir türdeki GameObject'ler döndürülür. Ben yerinde izleyen var, ama bana "KÖTÜ ERİŞİM" hatası veriyor:Enum özelliğine dayalı olarak NSMutableArray Filtreleme

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

o predicateWithFormat içine (yani bu enum ı tanımladığınız) bir "özel" türü geçmek mümkün mü aramak?

cevap

21

Dize biçim belirteci %@, bir tümceyi geçirirken bir nesneyi gösterir. Muhtemelen gameObjectType'ı int'a yazıp %d belirtecini kullanmak isteyebilirsiniz. Daha fazla bilgi için string format specifiers'a bir göz atın.

+0

İçine int ve% d kullanarak dökme yapmak istediğimi verdi! Teşekkürler. – Marty

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