2010-12-11 13 views
12

बनाने का प्रयास करते समय मुझे लूप में NSDictionaries बनाने और इसे NSMutableArray में जोड़ने में समस्याएं आ रही हैं।EXC_BAD_ACCESS एक नया NSDictionary

असल में मैं सिर्फ चाबियों का नाम बदलना चाहते हैं, लेकिन जब से मैं उस के लिए एक समारोह नहीं पा सके मैं निम्नलिखित कोड के लिए चला गया:

- (NSMutableArray *)getCategoriesForChannel:(int)channelId { 
    NSDictionary *data = [self call:@"get_categories.ashx"]; 
    NSArray *categories = [data objectForKey:@"categories"]; 
    NSMutableArray *returnArray = [NSMutableArray 
          arrayWithCapacity:[categories count]]; 

    for(NSDictionary *category in categories) { 
     [returnArray addObject:[NSDictionary dictionaryWithObjectsAndKeys: 
         [category objectForKey:@"Channel_id"], @"id", 
         [category objectForKey:@"Channel_name"], "@name", nil]]; 
    } 
    return returnArray; 
} 

लेकिन एप्लिकेशन को निरंतर इस्तीफा जब यह addObject: विधि पहुंचता है और EXC_BAD_ACCESS फेंकता है। मुझे लगता है कि इसे स्मृति प्रबंधन के साथ कुछ करना है, लेकिन चूंकि मेरे पास वास्तव में सी-पृष्ठभूमि नहीं है, मुझे नहीं पता कि इस मुद्दे को कैसे हल किया जाए। क्या कोई मुझे सही दिशा में इंगित कर सकता है? अग्रिम धन्यवाद!

उत्तर

28
[returnArray addObject: 
    [NSDictionary dictionaryWithObjectsAndKeys: 
    [category objectForKey:@"Channel_id"], @"id", 
    [category objectForKey:@"Channel_name"], "@name", nil]]; 

इस कोड को आप वास्तव में है (और टाइपो, जबकि यह अपने वेब ब्राउज़र में लिख पेश नहीं किया गया था), तो देखा कि पिछले कुंजी आपके पास "@name" बजाय @"name" है। यह प्रभावी रूप से NSString की बजाय सी-स्ट्रिंग होगा, जिसे ठीक से NSArray (या उस मामले के लिए अधिकांश संग्रह वर्ग) में जोड़ा नहीं जा सकता है।

+1

धन्यवाद सर, वास्तव में समस्या थी! –

+1

कभी-कभी आंखों का एक और सेट आपको चाहिए! यह मुझे बचाता है जो मुझे यकीन है कि निराशा के घंटे रहे होंगे। धन्यवाद। – MikeCocoa

+3

Arg, बस एक ही गलती की ;-(अविश्वसनीय कोई संकलन चेतावनी नहीं है .... –

2

लूप के भीतर आप इस [श्रेणी ऑब्जेक्टफोरकी: @ "चैनल_आईडी"] और [श्रेणी ऑब्जेक्टफोरकी: @ "चैनल_नाम"] NSLog कर सकते हैं? मुझे संदेह है कि कोई नील दे रहा है और परेशानी पैदा कर रहा है। निश्चित नहीं। केवल अनुमान है।