2009-09-25 12 views
52

Bir NSMutableDictionary öğesinden anahtar/değerleri sırayla görüntülemek için (tablo görünümünde), bunlara dizine göre erişmem gerekir. Dizine erişim bu dizine anahtarı verebilirse, değeri alabilirim. Bunu ya da farklı bir tekniği yapmanın bir yolu var mı?NSMutableDictionary içindeki nesnelere dizinle erişme

+0

Aşağıdakiler ne zaman yapılır: NSMutableDictionary * tmpDict = [[NSMutableDictionary alloc] init]; [tmpDict setObject: @ "CN-GSM" forKey: @ "Sağlayıcı:"]; [tmpDict setObject: @ "10010" forKey: @ "Number:"]; [tmpDict setObject: @ "Evet" forKey: @ "Free:"]; NSLog (@ "% @", [allKeys]]; [tmpDict sürümü]; Neden çıktı, tmpDict öğesine eklediğim değere göre sıralanmıyor? – ZYiOS

cevap

119

Nesnenin anahtarlarını içeren bir NSArray öğesi kullanabilirsiniz. allKeys yöntemi. Sonra buna endeksle bakabilirsiniz. Anahtarlarda dizide görünen sıranın bilinmediğini unutmayın.

NSMutableDictionary *dict; 

/* Put stuff in dictionary. */ 

for (id key in dict) { 
    id anObject = [dict objectForKey:key]; 
    /* Do something with anObject. */ 
} 

EDIT: Ben size kolayca örneğin hızlı numaralandırma kullanarak yapılır istediğini yapmaya çalışıyoruz anlamak Aslında, eğer: Örnek:

NSMutableDictionary *dict; 

/* Create the dictionary. */ 

NSArray *keys = [dict allKeys]; 
id aKey = [keys objectAtIndex:0]; 
id anObject = [dict objectForKey:aKey]; 

DÜZENLEME Sabit yazım hatası tarafından işaret Marco.

+2

"allkeys", "allKeys" dir – Mark

+0

'cellForRowAtIndexPath' dosyasında aşağıdaki gibi bir tablo görünümünde: 'NSArray * keys = [colors allKeys]; NSString * key = [keys objectAtIndex: indexPath.row]; cell = [tv dequeueReusableCellWithIdentifier: @ "CellColour" forIndexPath: indexPath]; cell.textLabel.text = [colors objectForKey: key]; cell.backgroundColor = [self colorFromHexString: key]; ' –

9

Tüm anahtarların bir dizesini sözlüğün allKeys yöntemiyle alabilirsiniz; ve sonra dizine dizine erişebilirsiniz. Ancak, tek başına bir sözlüğün içsel bir sıralaması yoktur, bu nedenle sözlükte bir değişiklik yapmadan önce ve sonra anahtarların sıralaması tamamen farklı olabilir

İlgili konular