我目前在我的viewcontroller中使用NSXMLParser。我想创建一个新类,它将2个数据元素作为属性并执行所有xmlparsing。我遇到的问题是让新类在完成解析等时“警告”父级。因此,viewcontroller(父级)可以关闭活动指示器,然后用信息更新视图。像
[myParent jobCompleted];
如何引用初始化对象的父级。我可以为该类设置自定义通知,以便创建一个观察者来监控它吗?
答案 0 :(得分:0)
由于缺乏更多信息,我将假设有关您实施的事情......
所以我猜你有一个委托(实现NSXMLParserDelegate协议),你的NSXMLParser做了所有的解析..对吗?
因此委托协议指定了一个名为:
的方法- (void)parserDidEndDocument:(NSXMLParser *)parser
如果您在委托中实现了该功能,您将知道文档何时被解析。所以现在你需要告诉你的viewcontroller这个事件。基本上有两种方法可以做到这一点。要么在NSXMLParserDelegate和viewcontroller之间建立“硬”连接。这基本上是通过为特定的viewcontroller指定属性并在分配NSXMLParserDelegate对象时将该属性设置为指向viewcontroller来完成的。 然后您将能够在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文件中合成它。
后一种做法会让你失去更多的连接,从而更容易移动它。
希望它有所帮助..否则让我知道......如果我在这里完全错了 - 请告诉我们=)