2013-05-20 6 views
5

मेरे पास प्लिस्ट है, मैं उस प्लिस्ट से एक म्यूटेबल डिक्शनरी में हाथियों को जोड़ना चाहता हूं। सबसे पहले मैं प्लिस्ट में उपयोगकर्ता नाम की जांच करता हूं और मेरा वर्तमान नाम समान है या नहीं, अगर ऐसा है तो मैं उस शब्दकोष रोम प्लिस्ट में सभी मान जोड़ना चाहता हूं और एक ही कुंजी भी असाइन करें?मैं कुंजी के साथ एनएसएमयूटेबल डिक्शनरी में ऑब्जेक्ट कैसे जोड़ूं?

for(int i=0;i<[displayList count];i++) 
    { 
     if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user]) 
     { 
      [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"]; 
      [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"]; 
      [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"]; 
      [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"]; 


     } 
    } 

[displayList गिनती] यह मान 7 है, इसलिए प्रत्येक मान 6 बार की जगह है, और केवल अंतिम मूल्यों हो रही है मैं चाहता हूँ उपयोगकर्ता नाम करने के लिए मिलान हर मूल्यों मैं कि mutabledictionary

+0

तो क्या समस्या यहाँ है लग रहा है? उम्मीद है कि "अंतिम पुस्तकें" आपकी "' एनएसएमयूटेबल डिक्शनरी "है, हां? –

+0

हां लेकिन [डिस्प्लेलिस्ट गिनती] यह मान 7 है इसलिए प्रत्येक मान 6 गुना बदल रहा है, और केवल अंतिम मान प्राप्त हो रहा है –

+0

@mango ऐसा इसलिए है क्योंकि आप प्रत्येक पुनरावृत्ति में एक ही कुंजी के विरुद्ध शब्दकोश के मूल्य (* प्रतिस्थापित *) सेट कर रहे हैं, यही कारण है कि आपको केवल अंतिम मूल्य मिलते हैं। –

उत्तर

12

मुझे लगता है कि आप बनाना चाहिए शब्दकोश की सरणी बस इस

NSMutableArray *finalArray = [[NSMutableArray alloc]init]; 

(int i=0;i<[displayList count];i++) 
{ 
    if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user]) 
    { 
     [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"]; 
     [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"]; 
     [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"]; 
     [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"]; 

     [finalArray addObject:finalBooks]; 
    } 
} 

तरह NSMutableArray करने के लिए अपने finalBooks शब्दकोश जोड़ने और तुम शब्दकोश की सरणी मिल जाएगा। शुभ लाभ !!

+0

आपको बहुत धन्यवाद –

+1

क्या आप का उपयोग नहीं करना चाहिए -objectForKey:/- setObject: forKey :? – Arcank

+0

अंतिम पुस्तकें = finalArray ??? – anson

2

एनएसएमयूटेबल डिक्शनरी में सेट वैल्यू विधि मूल्य को बदल देती है यदि कुंजी समान है। तो आप क्या कर सकते हैं या तो सरणी या शब्दकोशों के एनएसएमयूटेबल डिक्शनरी का उपयोग करें।

NSMutableDictionary *userDictionary=[[NSMutableDictionary alloc]init]; 

(int i=0;i<[displayList count];i++) 
{ 
    if([[[data valueForKey:@"username"] objectAtIndex:i] isEqualToString:user]) 
    { 
     [finalBooks setValue:[[data valueForKey:@"ID"] objectAtIndex:i] forKey:@"ID"]; 
     [finalBooks setValue:[[data valueForKey:@"name"] objectAtIndex:i] forKey:@"name"]; 
     [finalBooks setValue:[[data valueForKey:@"Place"] objectAtIndex:i] forKey:@"Place"]; 
     [finalBooks setValue:[[data valueForKey:@"username"] objectAtIndex:i] forKey:@"username"]; 

     [userDictionary setObject:finalBooks forKey:user]; 
    } 
} 

आप एक शब्दकोश में सब कुछ चाहते हैं, मैं तुम्हें NSString stringWithFormat:@"ID+%@",username],...[NSString stringWithFormat:@"username+%@",username]

के रूप में इस तरह के एक अद्वितीय कुंजी का उपयोग करने का सुझाव लेकिन यह गंदा :)

संबंधित मुद्दे