2008-09-22 17 views
83

क्या एक्सकोड डीबगर के माध्यम से NSDictionary चर के कुंजी/मान जोड़े को देखने का कोई तरीका है?एक्सकोड डीबगर में NSDictionary चर की सामग्री कैसे देखें?

Variable Value  Summary 
jsonDict 0x45c540 4 key/value pairs 
NSObject {...} 
    isa  0xa06e0720 

मैं इसे उम्मीद कर रहा था मुझे (एक सरणी चर के समान) शब्दकोश के प्रत्येक तत्व को दिखाने के लिए: यहाँ जानकारी की हद तक है, जब यह पूरी तरह से चर विंडो में विस्तार किया गया है।

उत्तर

133

जीडीबी विंडो में आप ऑब्जेक्ट का निरीक्षण करने के लिए po का उपयोग कर सकते हैं।

दिया:

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; 
[dict setObject:@"foo" forKey:@"bar"]; 
[dict setObject:@"fiz" forKey:@"buz"]; 

एक ब्रेकपाइंट सेट करने के बाद वस्तुओं जोड़ रहे हैं आप निरीक्षण कर सकते हैं क्या शब्दकोश

(gdb) po dict 
{ 
    bar = foo; 
    buz = fiz; 
} 
बेशक

में है इन NSString वस्तुओं है कि अच्छी तरह से मुद्रित कर रहे हैं। अन्य जटिल वस्तुओं के साथ वाईएमएमवी।

+7

हाय करना चाहिए! जीडीबी क्या है? पीओ क्या है? समझने के लिए निश्चित नहीं है ... आपकी मदद के लिए धन्यवाद! :) – Martin

+1

ठीक है तो मुझे पता चला कि जीडीबी जीएनयू डीबगर के लिए खड़ा है और वास्तव में एक्सकोड की डीबगर विंडो है।अब मुझे यह पता होना चाहिए कि पीओ – Martin

+18

ठीक है! इसलिए जीडीबी वास्तव में कंसोल में एक संकेत है, जहां आप कमांड इनपुट कर सकते हैं। "Po object_name" टाइप करके आपको कंसोल में ऑब्जेक्ट सामग्री मुद्रित हुई। – Martin

30

आप किसी ऑब्जेक्ट (ओबीजेसी या कोर फाउंडेशन) चर पर राइट-क्लिक कर सकते हैं और "कंसोल पर प्रिंट विवरण" का चयन कर सकते हैं (रन-> वैरिएबल व्यू में भी)। यह परिणाम obejct की -debugDescription विधि प्रिंट करता है, जो डिफ़ॉल्ट रूप से -description पर कॉल करता है। दुर्भाग्य से, NSDictionary उस आंतरिक डेटा का एक गुच्छा उत्पन्न करने के लिए ओवरराइड करता है जिस पर आप आमतौर पर परवाह नहीं करते हैं, इसलिए इस विशिष्ट मामले में क्रेग का समाधान बेहतर होता है।

प्रदर्शित कुंजी और मान भी -description का उपयोग करते हैं, इसलिए यदि आप संग्रहों और अन्य जगहों पर अपनी वस्तुओं के बारे में उपयोगी जानकारी चाहते हैं, तो -description ओवरराइड करना आवश्यक है। मैं आम तौर पर डिफ़ॉल्ट NSObject कार्यान्वयन के प्रारूप से मिलान करने के लिए इन पंक्तियों के साथ इसे लागू,:)

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; 
[dict setObject:@"foo" forKey:@"bar"]; 
[dict setObject:@"fiz" forKey:@"buz"]; 
CFShow(dict); 

उत्पादन में

-(NSString *) description 
{ 
    return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self class], self, [self foo]]; 
}
5

आप CFShow (उपयोग कर सकते हैं आप

{ 
    bar = foo; 
    buz = fiz; 
} 
0

देखेंगे आप NSLog का भी उपयोग कर सकते हैं।

इसके अलावा आप डीबग क्षेत्र या एक्सकोड में भी जा सकते हैं, फिर All Variables, Registers, Globals and Statics खोजें और फिर अपना चर चुनें। उस पर राइट क्लिक करें। फिर Print description of "...."

चुनें यह मदद करता है!

3

XCode 4.6 निम्न कार्यक्षमता है जो आप

The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger 

अब आप कंसोल में संपूर्ण वस्तु मुद्रित करने के लिए बिना इन वस्तु प्रकार निरीक्षण कर सकते हैं करने के लिए सहायक हो सकता है जोड़ा गया है। का आनंद लें!

स्रोत: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_6.html

+0

यह मेरे लिए छोटी है - केवल मेरे NSDictionary का हिस्सा दिखाता है –

0

अपने dict पर क्लिक करें, फिर थोड़ा पर क्लिक करें "i" आइकन, यह काम :-) Xcode5, view the value of a dict

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