วิธีรับ nodeContent ที่ฝังอยู่ในอาร์เรย์

สวัสดีทุกคน ฉันใช้เวลาสองสามชั่วโมงกับ SO เพื่อพยายามแก้ไขปัญหานี้ เรื่องสั้นสั้น ๆ ฉันกำลังพยายามรับค่าจาก nodeContent ในอาร์เรย์ เมื่อฉันมีเบรกพอยต์และ "คำอธิบายการพิมพ์" ของอาร์เรย์นี่คือสิ่งที่แยกออกมา คำถามของฉันคือ ฉันจะรับเนื้อหาของ "nodeContent" ที่ฝังอยู่ตามรายการด้านล่างได้อย่างไร ฉันอยากจะเอาสิ่งนี้กลับมาเป็นสตริงถ้าเป็นไปได้?

NSArray Printout ไปยังคอนโซล:

{
    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;
}

ฉันจะเอามันกลับมาเป็นสตริงได้ไหม?

NSString * value = [code]??

ฉันขอขอบคุณความช่วยเหลือใด ๆ จริงๆ!


person Louie    schedule 05.06.2011    source แหล่งที่มา


คำตอบ (1)


คุณสามารถแก้ไข TFHppleElement เพื่อส่งคืนอ็อบเจ็กต์ลูกได้

in TFHppleElement.h:

@interface TFHppleElement : NSObject
[..]

- (NSArray*)children
@end

in TFHppleElement.m:

NSString * const TFHppleNodeChildArrayKey     = @"nodeChildArray";

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

ตอนนี้คุณจะได้มันแบบนี้

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

คำตอบเดิม

เอกสารที่พิมพ์ออกมาแสดงให้เห็นว่าเป็นออบเจ็กต์พจนานุกรมที่ใช้เครื่องหมายปีกกา คุณอาจต้องการดูที่ this. ในกรณีนี้ คุณควรจะได้รับค่าของคุณโดยใช้

NSString *value = [[object valueForKeyPath:@"nodeChildArray.nodeContent"] objectAtIndex:0];
person Deepak Danduprolu    schedule 05.06.2011
comment
เฮ้ Deepak ขอบคุณสำหรับคำตอบ ฉันลองทำตามคำแนะนำของคุณแล้ว แต่ฉันได้รับข้อยกเว้นเมื่อกดปุ่ม ข้อเสนอแนะอื่น ๆ โดยบังเอิญ? ขอบคุณเพื่อน! 05-06-2554 09:51:35.198 Hpple[12055:207] *** กำลังยุติแอปเนื่องจากข้อยกเว้นที่ไม่ถูกตรวจจับ 'NSUnknownKeyException' เหตุผล: '[‹TFHppleElement 0x4e21dc0› valueForUndefKey:]: คลาสนี้ไม่สอดคล้องกับการเข้ารหัสค่าคีย์ สำหรับคีย์ nodeChildArray' - person Louie; 05.06.2011
comment
คุณควรส่งข้อความ node แทนที่จะเป็นอินสแตนซ์ TFHppleElement - person Deepak Danduprolu; 05.06.2011
comment
ฉันไม่แน่ใจทั้งหมดว่าจะทำอย่างไร? ฉันจะค้นหาให้ทั่วสักหน่อย! - person Louie; 05.06.2011
comment
จริงๆ แล้วตอนนี้ฉันเข้าใจแล้วว่าปัญหาที่แท้จริงของคุณคืออะไร ฉันขอแนะนำให้คุณแก้ไขคลาส TFHppleElement เพื่อให้มีเมธอด children ที่ส่งคืนอาร์เรย์ที่ชี้ด้วย nodeChildArray อาจเป็นแนวทางที่ดีกว่า - person Deepak Danduprolu; 05.06.2011
comment
@Louie แก้ไขคำตอบด้วยการแก้ไขที่แนะนำ - person Deepak Danduprolu; 05.06.2011
comment
เฮ้ Deepak ฉันกำลังพยายามตั้งค่าข้อเสนอแนะของคุณ ฉันจะแจ้งให้คุณทราบ - person Louie; 05.06.2011
comment
หลายชั่วโมงต่อมา! ... ฉันเข้าใจแล้ว... ขอบคุณสำหรับข้อเสนอแนะของคุณ ยกนิ้วให้! - person Louie; 05.06.2011