2009-09-05 85 views
0

我目前有NSXMLParser在我的viewcontroller中工作。我想創建一個新的類,它將有2個數據元素作爲屬性並執行所有的xml解析。我遇到的問題是讓新類在完成解析時「警告」父級,等等。因此,viewcontroller(父級)可以關閉活動指示器,然後使用該信息更新視圖。像引用父對象

[myParent jobCompleted];

如何引用初始化對象的父對象。我可以設置該類的自定義通知,以便我可以創建一個觀察者來監視它嗎?

回答

0

在缺乏更多的信息,我將假定你實現出頭..

所以我想你有你的NSXMLParser委託(實現NSXMLParserDelegate協議)做所有的分析..對不對?

所以委託協議指定調用的方法:

- (void)parserDidEndDocument:(NSXMLParser *)parser 

如果您實現您的委託時,該文檔已被解析,你就知道了。所以現在你需要告訴你的視圖控制器關於這個事件。基本上有兩種方法來做到這一點。您可以在NSXMLParserDelegate和viewcontroller之間建立一個「硬」連接。這基本上是通過指定該特定視圖控制器的屬性並在分配NSXMLParserDelegate對象時將該屬性設置爲指向視圖控制器來完成的。 然後你就可以在parserDidEndDocument委託方法將消息發送到「父」

- (void)parserDidEndDocument:(NSXMLParser *)parser{ 
    [viewcontroller jobCompleted]; 
} 

另一種方式是採取委託模式的優勢,並指定NSXMLParserDelegateDelegate協議(否則或命名的東西) 。這可能是這個樣子:

@protocol NSXMLParserDelegateDelegate 

-(void)parserDidEndDocument:(NSXMLParserDelegate *)parserDelegate; 

@end 

,然後作出委託財產的NSXMLParserDelegate

@interface NSXMLParserDelegate : NSObject<NSXMLParserDelegate>{ 
    id<NSXMLParserDelegateDelegate> _delegate; 
} 
@property (assign) id<NSXMLParserDelegateDelegate> _delegate; 

@end 

記得合成它在.m文件。

這樣做的後一種方式會給你一個更多的失去聯繫,從而更容易移動的東西。

希望它有助於..否則讓我知道...如果我完全錯了這裏的傢伙 - 讓我知道=)

+0

我試圖基本上硬編碼。所以當我從ABC內部創建一個新的對象XYZ時,我可以在XYZ內引用ABC – SonnyBurnette 2009-09-08 23:52:42