2010-06-13 11 views
17

Ich habe ein NSMutableArray gefüllt mit Objekten vom Typ "GameObject". GameObject hat eine Reihe von Eigenschaften, von denen eine "gameObjectType" ist. "gameObjectType" ist vom Typ GameObjectTypeEnum. Ich möchte in der Lage sein, dieses NSMutableArray zu filtern, so dass nur GameObjects eines bestimmten Typs zurückgegeben werden. Ich habe an Ort und Stelle die folgende bekam, aber es gibt mir ein „BAD ACCESS“ Fehler:Filtern von NSMutableArray basierend auf enum-Eigenschaft

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

Ist es möglich, einen „custom“ Typ übergeben (dh diese Enum I definiert haben) in die predicateWithFormat Anruf?

Antwort

21

Der Zeichenfolgenformatbezeichner %@ zeigt ein Objekt an, während Sie einen Integralwert übergeben. Wahrscheinlich möchten Sie den gameObjectType auf int tippen und den Spezifizierer %d verwenden. Werfen Sie einen Blick auf die string format specifiers für weitere Informationen.

+0

Casting zu Int und Verwendung von% d gab mir, was ich brauchte! Vielen Dank. – 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]; 
} 
Verwandte Themen