gpt4 book ai didi

xml - SWXMLHash 迭代错误

转载 作者:行者123 更新时间:2023-11-30 10:08:28 25 4
gpt4 key购买 nike

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

总的来说,它工作得很好(或多或少,我不知道如何使用 Alamofire 的completionHandler,我什至不明白它到底是什么......为我感到羞耻 )

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

让我给您举一个 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 还很陌生......

最诚挚的问候,

哈勒龙

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

最佳答案

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

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

您正在循环结果元素,但听起来总会有其中一个。

希望这有帮助。

关于xml - SWXMLHash 迭代错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34676251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com