gpt4 book ai didi

swift - 我将无法在 Swift 中使用 Alamofire 返回值

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:59 26 4
gpt4 key购买 nike

我目前的代码似乎没有返回任何东西,我找不到导致问题的原因。

func getQuests(category: NSString, count: Int) -> NSArray {
var quests = NSArray()

Alamofire.request(.GET, apiUrlString, parameters: ["category": category, "count": count])
.responseJSON { (request, response, json, error) in
dispatch_async(dispatch_get_main_queue(), {
quests = json as NSArray
})
}

println(quests) #=> ()

return quests
}

有人知道如何解决我遇到的问题吗?

[更新]:这是状态。

请看第五行和第八行。我无法完成任务任务。

var quests = NSArray()

getQuests("normal", count: 30, completionHandler: {
quests in
self.quests = quests
})

println(self.quests) #=> ()

func getQuests(category: NSString, count: Int, completionHandler: (NSArray -> Void)) {
var quests = NSArray()

Alamofire.request(.GET, apiUrlString, parameters: ["category": category, "count": count])
.responseJSON { (request, response, json, error) in
dispatch_async(dispatch_get_main_queue(), {
quests = json as NSArray
completionHandler(quests)
})
}
}

谢谢。

最佳答案

其他答案肯定是正确的,并且解决了您在异步操作中遇到的许多问题。我只想补充一点,dispatch_async(dispatch_get_main_queue()) 调用不是必需的。

这已经在 Alamofire 内部自动完成。 Alamofire 处理内部委托(delegate)调度队列上的所有操作。一旦完成所有这些操作(验证、响应序列化等),默认情况下在主调度队列上调用完成处理程序闭包。这使得 dispatch_async 变得不必要,应该将其删除。

You can also run your completion handlers on your own provided dispatch queue if you like, but that's certainly an advanced feature that is not applicable to this use case.

这是相同逻辑的更简洁版本。

let apiUrlString = "some/url/path"

func getQuests(#category: NSString, count: Int, completionHandler: (NSArray) -> Void) {
Alamofire.request(.GET, apiUrlString, parameters: ["category": category, "count": count])
.responseJSON { _, _, json, _ in
completionHandler(json as NSArray)
}
}

var myQuests: NSArray?

getQuests(category: "normal", count: 30) { quests in
myQuests = quests
println("My Quests: \(myQuests)")
}

关于swift - 我将无法在 Swift 中使用 Alamofire 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564801/

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