【问题标题】:SWXMLHash iterating ErrorSWXMLHash 迭代错误
【发布时间】:2016-01-08 11:40:21
【问题描述】:

我是 Swift 新手,正在编写我的第一个带有网络请求的应用程序。出于测试目的,我使用 Alamofire 和 SWXMLHash 框架创建了一个应用程序,用于解析请求中的 xml 数据。

一般来说,它工作得很好(或多或少,我不知道如何为 Alamofire 使用 completionHandler,我什至不明白它到底是什么...... 真丢脸 )

但现在这是我的 xml-Structure 第一次有多个同名项目,我想使用它们的“名称”属性将它们全部迭代到一个数组中。

让我举一个 XML 的例子:

<Root>
  <Results>
   <Url Name="Test1"></Url>
   <Url Name="Test2"></Url>
   <Url Name="Test3"></Url>
  </Results>
</Root>

所以我的数组应该是这样的:

["Test1", "Test2", "Test3"]

到目前为止,我的代码无法正常工作...我收到一个错误,即展开 xml 数据返回 nil。这是整个文件的代码:

import WatchKit
import Foundation
import Alamofire
import SWXMLHash

public var url = "http://www.testurl.com"
public var user = "testuser"

class InterfaceController: WKInterfaceController {

 @IBAction func selectedAccountActivate() {
        campaignLister()
    }

    func campaignLister(){
        Alamofire.request(.GET, url, parameters: ["function":"catalog", "user":user, "pwd":"1234"])
            .response { (request, response, data, error) in
                //print(response)
                let xml = SWXMLHash.parse(data!)

                var xml2: [String] = []

                for elem in xml["Root"]["Results"] {

/以下行给了我错误。当我发出一个只有一个“URL”元素的请求时,它可以工作,但是一旦我在这个例子中有很多类似的东西,我的应用程序就会崩溃/

xml2.append(elem["Url"].element!.attributes["Name"]!) } 打印(xml2) } }

    override func willActivate() {
        super.willActivate()
    }

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
    }

    override func didDeactivate() {
        super.didDeactivate()
    }

}

谁能帮帮我?我经常使用谷歌来解决这个问题,但我没有找到任何解决方案。特别是因为我对 Swift 很陌生...

最好的问候,

哈勒隆

(抱歉,您可能会发现语法错误,英语不是我的母语。)

【问题讨论】:

    标签: xml xcode swift alamofire swxmlhash


    【解决方案1】:

    我认为您真正想要做的是遍历 Url 元素,如下所示:

    for elem in xml["Root"]["Results"]["Url"].all {
        let urlValue = elem.element!.attributes["Name"]!;
    }
    

    您改为循环结果元素,但听起来总会有其中之一。

    希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2019-01-22
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多