NSXMLParser无法解析手表上的数据,但在手表模拟器上工作正常

时间:2016-02-22 15:04:18

标签: watchkit apple-watch watch watch-os-2

NSXMLParser 无法解析观看上的数据,但在观看模拟器上工作正常。如何解决此问题?

请帮助

这是代码:

    let url:String="http://www.someurl.com/data"
    let urlToSend: NSURL = NSURL(string: url)!
    // Parse the XML
    parser = NSXMLParser(contentsOfURL: urlToSend)!
    parser.delegate = self

    let success:Bool = parser.parse()

    if success {
        print("parse success!")

        print(strXMLData)


    } else {
        print("parse failure!")
    }

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,在手表上运行时我无法调试应用程序。我的解决方案是解析iPhone App端的XML文件,并通过WCSession将数据传递给手表。

答案 1 :(得分:0)

我有完全相同的问题。我在Apple自己的论坛上找到了一个答案。

您需要将XML从URL读入NSData,然后使用NSData对象而不是NSURL调用XML解析器。

这是一些代码

var nsXMLData = NSData()
var parser = NSXMLParser()

func xmlFileRequest(urlweb:NSURL){

    print("in xmlFileRequest")

    let requestURL: NSURL = urlweb
    let urlRequest: NSMutableURLRequest = 
         NSMutableURLRequest(URL: requestURL)
    let session = NSURLSession.sharedSession()
    let task = session.dataTaskWithRequest(urlRequest) {
        (data, response, error) -> Void in

        if error == nil {
            print(">>>>>>xmlFileRequest success!")
            self.nsXMLData = data!
            self.beginParsing()
        } else {
            print(">>>>>>>xmlFileRequest fail")
        }

    }
    task.resume()
}

func beginParsing()
{
    parser = NSXMLParser.init(data:nsXMLData)

    parser.delegate = self
    let success:Bool = parser.parse()
    if success {
        print("***parse success***")

    } else {
        print("***parse failure!***")
        let errorMsg:String =
            (parser.parserError?.localizedDescription)!
        print("Error = " + errorMsg)
    }

}

我刚刚在Apple手表上测试了这段代码。