2008-09-22 29 views
83

Bir NSDictionary değişkeninin anahtar/değer çiftlerini Xcode hata ayıklayıcısı üzerinden görüntülemenin bir yolu var mı?Xcode hata ayıklayıcıda NSDictionary değişkeninin içeriği nasıl görüntülenir?

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

Bana (bir dizi değişkeni benzer) Sözlük her elemanını göstermek için bekliyordum: Burada tam değişken penceresinde genişletilir bilgilerin kapsamı bu.

cevap

133

gdb penceresinde nesneyi incelemek için po kullanabilirsiniz.

verilen:

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

bir kesme noktası ayarlama nesneler bu güzel yazdırmak NSString nesnelerdir sözlüğe Elbette

(gdb) po dict 
{ 
    bar = foo; 
    buz = fiz; 
} 

ne olduğunu inceleyebilir eklendikten sonra. Diğer karmaşık nesnelerle YMMV.

+7

Hi :-) işi yapmalıdır küçük tıklayın! Gdb nedir? Po nedir? Anladığınızdan emin değilim ... Yardımlarınız için teşekkürler! Tamam :) – Martin

+1

yüzden GDB, GNU debugger anlamına gelir ve aslında Xcode ayıklayıcı pencere olduğunu öğrendim.Şimdi – Martin

+18

neyin ne olduğunu bulmam gerek! Yani gdb, aslında, komutları girebileceğiniz Konsolda bir istemdir. "Po object_name" yazarak, konsolda basılı nesne içeriğini aldınız. – Martin

30

Sen (objc veya Core Vakfı) değişken ve “Console Baskı Açıklama” (aynı zamanda Run içinde> Değişkenler görüntüle) herhangi bir nesne sağ tıklayabilirsiniz. Bu, sonucu varsayılan olarak -description olarak adlandırılanyöntemini yazdırır. Ne yazık ki, NSDictionary bunu genellikle umursamadığınız bir dizi dahili veri üretmek için geçersiz kılar, bu durumda, craigb’in çözümü daha iyidir. Başka bir yerde koleksiyonlarında nesneleri ve ilgili faydalı bilgiler istiyorum eğer öyleyse

görüntülenen anahtarlar ve değerler de -description bir zorunluluktur ağır basan, -description kullanın. Eğer

{ 
    bar = foo; 
    buz = fiz; 
} 
5

Sen CFShow (kullanabilirsiniz) çıktısında

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

: Genellikle varsayılan NSObject uygulama biçimiyle eşleşecek şekilde, bu satırlar boyunca uygulamak NSLog'u da kullanabilirsiniz.

Ayrıca daha sonra değişken seçin All Variables, Registers, Globals and Statics öğrenmek, sonra hata ayıklama alanı veya xcode gidebilir. Üzerine sağ tıkla. Sonra Print description of "...."

'u seçin.

0

göreceksiniz

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

XCode 4.6 Eğer

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

Artık konsolda tüm nesneyi yazdırmak zorunda kalmadan bu nesne türlerini inceleyebilir yararlı olabilir aşağıdaki işlevselliği ekledi. Keyfini çıkarın!

Kaynak: senin dict üzerine http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_6.html

+0

Bu benim için sorun değil - sadece NSDictionary'ımın bir bölümünü gösterir –

0

tıklayın ve ardından "i" simgesi, bu Xcode5, view the value of a dict