2011-12-01 13 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]; 
} 

तो अब मैं साथ

कुंजी कुंजी एक्स और वाई शब्दकोश में के लिए मूल्य को बदलने की जरूरत के लिए कई शब्दकोशों जोड़ने : नाम = easySprite इसलिए उस विशिष्ट शब्दकोश को खोजने की आवश्यकता है [अन्य शब्दकोशों में नाम के लिए अलग-अलग मान हैं]

मैं यह कैसे कर सकता हूं?

धन्यवाद!

उत्तर

18

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

अब matchedDicts कुंजी @ "नाम" के लिए मूल्य @ "easySprite" साथ शब्दकोशों में शामिल है, का मिलान नहीं हुआ शब्दकोशों प्राप्त करने के लिए निम्न कार्य करें। वहां से बाकी (एक्स और वाई बदलना) करें।

+0

जो कि किसी अन्य सरणी में शब्दकोश की सामग्री देखने के लिए बहुत बढ़िया धन्यवाद है, लेकिन मैं कैसे जान सकता हूं कि उस शब्दकोश के लिए अनुक्रमणिका क्या है? और उस विशिष्ट शब्दकोश को संशोधित करें ?, धन्यवाद! – MaKo

+0

आप एक सरणी में मौजूद एक शब्दकोश को संपादित नहीं कर सकते हैं। सबसे पहले शब्दकोश प्राप्त करें, नए मानों के साथ एक नया शब्दकोश बनाएं, सरणी से पुराना शब्दकोष हटाएं, और सरणी में नया शब्दकोश जोड़ें। – EmptyStack

+0

@EmptyStack, जब तक NSArray के तत्व पहले से ही NSMutableDictionary नहीं हैं ... उसका 'unBloqueDicto' एक NSMutableDictionary है, इसलिए यह * mutable है। –