2011-12-01 9 views
7

Tôi có một mảng với từ điển, và cần phải tìm kiếm trough mảngTìm kiếm NSArray của NSDictionaries

và sửa đổi một cuốn từ điển cụ thể trong mảng tìm thấy bởi một tên đối tượng bên trong từ điển.

Vì vậy, tạo ra các mảng có thể thay đổi, từ điển, và thêm nhiều từ điển vào mảng

 ...{ self.bloquesArray = [[[NSMutableArray alloc] init]autorelease]; 
    [self createBloqueDicto]; 
    [self.unBloqueDicto setObject:@"easySprite" forKey:@"Name"]; 
    [self.unBloqueDicto setObject:@"290" forKey:@"X"]; 
    [self.unBloqueDicto setObject:@"300" forKey:@"Y"]; 

    [self.bloquesArray addObject:self.unBloqueDicto]; 

} 

- (void)createBloqueDicto { 
self.unBloqueDicto = [[[NSMutableDictionary alloc] init] autorelease]; 
} 

vì vậy bây giờ tôi cần phải thay đổi giá trị cho X chìa khóa và Y có trong từ điển với

chủ chốt : Tên = easySprite vì vậy cần phải tìm từ điển cụ thể đó [từ điển khác có các giá trị khác nhau cho Tên]

làm cách nào tôi có thể làm điều này?

cảm ơn!

Trả lời

18

Làm như sau để có được những bộ từ điển phù hợp,

NSPredicate *p = [NSPredicate predicateWithFormat:@"Name = %@", @"easySprite"]; 
NSArray *matchedDicts = [bloquesArray filteredArrayUsingPredicate:p]; 

Bây giờ matchedDicts chứa các từ điển với giá trị @ "easySprite" cho phím @ "Tên". Làm phần còn lại (thay đổi X và Y) từ đó.

+0

đó là lời cảm ơn tuyệt vời, để xem nội dung của từ điển trong một mảng khác, nhưng làm cách nào tôi có thể biết chỉ mục cho từ điển đó là gì? và sửa đổi từ điển cụ thể đó ?, cảm ơn! – MaKo

+0

Bạn không thể chỉnh sửa một từ điển nằm trong một mảng. Đầu tiên lấy từ điển, tạo một từ điển mới với các giá trị mới, xóa từ điển cũ khỏi mảng và thêm từ điển mới vào mảng. – EmptyStack

+0

@EmptyStack, trừ khi các phần tử của NSArray đã là NSMutableDictionary ... 'unBloqueDicto' của anh ta là một NSMutableDictionary, vì vậy nó * là * có thể thay đổi. –