【发布时间】:2015-01-31 00:49:11
【问题描述】:
我正在尝试插入带有inout 参数的函数,以将从异步回调接收到的数据附加到外部数组。但是,它不起作用。我尝试了我所知道的一切来找出原因 - 没有运气。
根据@AirspeedVelocity 的建议,我重写了如下代码以删除不必要的依赖项。我还使用Int 作为inout 参数以保持简单。
输出始终为:c before: 0c after: 1
我无法弄清楚这里出了什么问题。
func getUsers() {
let u = ["bane", "LiweiZ", "rdtsc", "ssivark", "sparkzilla", "Wogef"]
var a = UserData()
a.userIds = u
a.dataProcessor()
}
struct UserData {
var userIds = [String]()
var counter = 0
mutating func dataProcessor() -> () {
println("counter: \(counter)")
for uId in userIds {
getOneUserApiData(uriBase + "user/" + uId + ".json", &counter)
}
}
}
func getOneUserApiData(path: String, inout c: Int) {
var req = NSURLRequest(URL: NSURL(string: path)!)
var config = NSURLSessionConfiguration.ephemeralSessionConfiguration()
var session = NSURLSession(configuration: config)
var task = session.dataTaskWithRequest(req) {
(data: NSData!, res: NSURLResponse!, err: NSError!) in
println("c before: \(c)")
c++
println("c after: \(c)")
println("thread on: \(NSThread.currentThread())")
}
task.resume()
}
谢谢。
【问题讨论】:
-
您需要将代码简化为更简单的情况(最好不使用外部库)并将其作为问题的一部分发布。如果他们必须通读几页代码才能得到你想要做的事情,你可能不会从任何人那里得到好的答案。
-
@AirspeedVelocity 谢谢。我会尽快修改。
-
我刚刚发布了一个问题,以了解如何进行修改。这是我知道 inout 在这种情况下不起作用之后的另一个问题。 stackoverflow.com/questions/28254254/…
标签: swift