Cara mengubur nodeContent dalam sebuah array

Hai semuanya, saya telah menghabiskan beberapa jam di SO untuk mencoba menyelesaikan masalah ini. Singkat cerita saya mencoba untuk mendapatkan nilai dari nodeContent dalam sebuah array. Ketika saya memiliki breakpoint dan "mencetak deskripsi" dari sebuah array, inilah yang dimuntahkannya. Pertanyaan saya adalah, bagaimana cara mendapatkan konten "nodeContent" yang terkubur di bawah ini? Saya ingin mengembalikan ini dalam bentuk string jika memungkinkan?

Cetakan NSArray ke konsol:

{
    nodeAttributeArray =     (
                {
            attributeName = class;
            nodeContent = g;
        }
    );
    nodeChildArray =     (
                {
            nodeAttributeArray =             (
                                {
                    attributeName = href;
                    nodeContent = "/site.aspx?s=23RBHJz4%2bck%3";
                }
            );
            nodeChildArray =             (
                                {
                    nodeContent = update;
                    nodeName = div;
                }
            );
            nodeContent = "3.49"; //THIS IS THE VALUE I WANT
            nodeName = a;
        }
    );
    nodeContent = "";
    nodeName = th;
}

Bisakah saya mendapatkannya kembali sebagai string?

NSString * value = [code]??

Saya sangat menghargai setiap bantuan!


person Louie    schedule 05.06.2011    source sumber


Jawaban (1)


Anda dapat memodifikasi TFHppleElement untuk mengembalikan objek anak-anak.

in TFHppleElement.h:

@interface TFHppleElement : NSObject
[..]

- (NSArray*)children
@end

in TFHppleElement.m:

NSString * const TFHppleNodeChildArrayKey     = @"nodeChildArray";

@implementation TFHppleElement
[..]
- (NSArray*)children {
    [node objectForKey:TFHppleNodeChildArrayKey];
}
[..]
@end

Jadi sekarang Anda bisa mendapatkannya seperti ini,

NSString *value = [[[object children] objectAtIndex:0] content];

Jawaban Asli

Hasil cetakannya menunjukkan bahwa itu adalah objek kamus berdasarkan kurung kurawal. Anda mungkin ingin melihat this. Untuk kasus ini, Anda harus bisa mendapatkan nilai Anda menggunakan,

NSString *value = [[object valueForKeyPath:@"nodeChildArray.nodeContent"] objectAtIndex:0];
person Deepak Danduprolu    schedule 05.06.2011
comment
Hai Deepak, terima kasih atas balasannya. Saya mencoba saran Anda tetapi saya mendapatkan pengecualian ketika berhasil. Ada saran lain yang kebetulan? Terima kasih sobat! 05-06-2011 09:51:35.198 Hpple[12055:207] *** Menghentikan aplikasi karena pengecualian yang tidak tertangkap 'NSUnknownKeyException', alasan: '[‹TFHppleElement 0x4e21dc0› valueForUndefinisiKey:]: kelas ini tidak sesuai dengan pengkodean nilai kunci untuk kunci nodeChildArray.' - person Louie; 05.06.2011
comment
Anda harus mengirim pesan ke node daripada ke TFHppleElement. - person Deepak Danduprolu; 05.06.2011
comment
Saya tidak sepenuhnya yakin bagaimana melakukan itu? Aku akan mencari-cari sebentar! - person Louie; 05.06.2011
comment
Sebenarnya, sekarang saya sudah mengerti apa masalah Anda sebenarnya. Saya menyarankan Anda memodifikasi kelas TFHppleElement agar memiliki metode children yang mengembalikan array yang ditunjuk oleh nodeChildArray. Mungkin itu pendekatan yang lebih baik. - person Deepak Danduprolu; 05.06.2011
comment
@Louie memodifikasi jawabannya dengan modifikasi yang disarankan. - person Deepak Danduprolu; 05.06.2011
comment
Hai Deepak, saya mencoba menyiapkan saran Anda. Saya akan terus mengabari Anda. - person Louie; 05.06.2011
comment
Beberapa jam kemudian! ... Saya mengerti... terima kasih atas saran Anda. jempolan! - person Louie; 05.06.2011