2010-06-13 39 views
17

Tôi có một NSMutableArray chứa đầy các đối tượng thuộc loại "GameObject". GameObject có một số thuộc tính, một trong số đó là "gameObjectType". "gameObjectType" thuộc loại GameObjectTypeEnum. Tôi muốn có thể lọc NSMutableArray này để chỉ GameObject của một kiểu nhất định được trả về. Tôi đã có những điều sau tại chỗ, nhưng nó đem lại cho tôi một "TIẾP CẬN BAD" lỗi:Lọc NSMutableArray dựa trên thuộc tính enum

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

Có thể vượt qua một "tùy chỉnh" loại (ví dụ, enum này tôi đã xác định) vào predicateWithFormat gọi điện?

Trả lời

21

Trình định dạng chuỗi ký tự %@ cho biết một đối tượng, trong khi bạn đang chuyển một giá trị tích phân. Bạn có thể muốn định kiểu trò chơiObjectType thành một số int và sử dụng thông số %d. Hãy xem string format specifiers để biết thêm thông tin.

+0

Truyền tới int và sử dụng% d đã cho tôi những gì tôi cần! Cảm ơn. – 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]; 
} 
Các vấn đề liên quan