2009-09-05 104 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