2011-12-01 149 views
7

的我有字典, 數組,需要搜索槽陣列搜索NSArray的NSDictionaries

和修改特定字典由字典中的對象名稱找到在數組中。

因此,創建可變數組,字典,許多字典添加到陣列

 ...{ 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]; 
} 

所以現在我需要

鍵更改爲在字典中鍵X和Y的值:Name = easySprite 所以需要找到特定字典[其他字典對於Name有不同的值]

請問我該怎麼做?

謝謝!

回答

18

執行以下操作來獲得匹配的字典,

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

現在matchedDicts包含的價值@ 「easySprite」爲重點@ 「名稱」的字典。從那裏做剩下的(改變X和Y)。

+0

非常感謝,看到另一個數組中的字典的內容,但我怎麼知道該字典的索引是什麼?並修改該特定字典?,謝謝! – MaKo

+0

您無法編輯數組中的字典。首先獲取字典,用新值創建一個新字典,從數組中刪除舊字典,然後將新字典添加到數組中。 – EmptyStack

+0

@EmptyStack,除非NSArray的元素已經是NSMutableDictionary ...他的'unBloqueDicto'是一個NSMutableDictionary,所以它*是*可變的。 – 2011-12-01 12:09:05