ios - 数据从 watch 发送到手机后未调用 Swift 3 XML 解析委托(delegate)

标签 ios swift delegates watchkit

我正在尝试了解委托(delegate)如何为项目工作。这个想法是从 watch 应用程序的 TableView 中选择一个部分,并在手机上解析 xml。但是,当我单击某个部分以启动解析器时,什么也没有发生。

因此,当手机加载时,我执行以下操作。

override func viewDidLoad() {
    super.viewDidLoad()

    parser.delegate = self

    if (WCSession.isSupported()) {
        print("Phone Connected")
        session = WCSession.default()
        session.delegate = self
        session.activate()
    }
}

当我点击一个部分将消息从 watch 发送到手机时,我尝试开始解析 url 的数据。

func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
    parseSection(s: message["section"]! as! String)
}

func parseSection(s: String){
    let link = "http://www.espn.com/espn/rss/" + s 
    let url : URL = URL(string: link)!
    parser = XMLParser(contentsOf: url)!
    parser.parse()
}

但是下面的委托(delegate)什么都不做。

func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
    print("Parser Begins")
}

func parser(_ parser: XMLParser, foundCharacters string: String) {
    print("Characters Found")
}

func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    print("Parser Ends")
}

最佳答案

您的类需要实现 XMLParserDelegate 协议(protocol)才能调用解析函数。您已经这样做了,但是您错过了为 XMLParser 设置委托(delegate):

func parseSection(s: String){
    let link = "http://www.espn.com/espn/rss/" + s 
    let url : URL = URL(string: link)!
    parser = XMLParser(contentsOf: url)!
    parser.delegate = self  // <-- set the delegate
    parser.parse()
}

关于ios - 数据从 watch 发送到手机后未调用 Swift 3 XML 解析委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41094127/

相关文章:

ios - 设置 UIScrollView 可见区域

c# - 从属性 getter 或 setter 方法创建委托(delegate)

iOS:从委托(delegate)中获取实例变量值(属性)

ios - iTunes Store Search API 中的空结果

ios - 从 .xib 文件加载接口(interface)的自定义 UIView 类中出现错误

ios - 使用 Swift 在后端存储数据

swift - 如何根据位置/与用户位置的接近程度有效地检查数据库对象?

swift - 在 Accelerate Framework 中将复数 (__CLPK_complex) 提升为指数

ios - 沿贝塞尔路径的一部分为 UIView 设置动画

cocoa - 在 Carbon Objective C++ 应用程序中使用 Cocoa delegate