【问题标题】:Sending information back from delegate [iPhone]从代表发回信息 [iPhone]
【发布时间】:2010-06-17 17:21:14
【问题描述】:

我在我的 RootViewController.m 文件中使用 NSXMLParser。

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:response_data];
[xmlParser setDelegate:self];
[xmlParser parse];
[xmlParser release];

我也在实现这个方法来将条目添加到 RootViewController.m 中定义的字典以供以后使用:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict

但是,我想获取多个 XML 文件并对其节点执行不同的操作;这听起来像我需要使用外部文件作为代表。我的问题是:

如果我有以下实现文件(及其头文件):

  • RootViewController.m
  • XMLDelegate1.m
  • XMLDelegate2.m

并将ith NSXMLParser 委托设置为 XMLDelegatei.m,我怎样才能让这些文件返回一个 NSDictionary,然后我可以将其添加到 RootViewController 中定义的 NSDictionary。米?

我猜有两种可能的答案:

  1. 使用我不知道的方法;或
  2. 使用更好的工作流程

我怀疑是 2,但希望是 1。

谢谢, 安迪

更新:所以我找到了实现目标的方法,尽管我不相信这是最好的方法。基本上,我让我的代表更新 Plist 文件并使用通知中心来发现何时发生这种情况。

【问题讨论】:

    标签: iphone delegates nsxmlparser


    【解决方案1】:

    Apple 的Event-Driven XML Programming Guide 中对这个“问题”进行了很好的讨论。“使用多个代表”部分涉及使用策略。该文档包括Element 类的代码清单,这是算法的“智能”所在。在代码示例中,作者假设读者知道该示例是针对具有父级、名称、属性、子级和解析器属性的Element 类。 Element 类实现了NSXMLParserDelegate 协议。 Element 类还将具有 NSMutableString *content 属性,该属性在示例中未包含的 - (void)appendString:(NSString *)aString 方法中更新。

    【讨论】:

      【解决方案2】:

      如果我理解您的问题,不是代码示例响应而是模式一:

      您可以只定义一个类,创建它的实例,创建匹配的解析器实例,然后手动设置解析器的实例以使用该类的实例作为委托......每个类实例都可以将它的 DOM 附加到一个已知的全局数组中。

      这是一种方式。以编程方式设置委托(不使用 IB)听起来像你想要的。

      【讨论】:

      • 我在制作某种 XMLController.m 类来处理所有 XML 解析时遇到的问题是 didStartElement 方法不返回任何内容,尤其是不返回来自我的 RootViewController.m 的原始调用..有没有办法解决这个问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多