gpt4 book ai didi

ios - 方法总是返回 Nil

转载 作者:行者123 更新时间:2023-11-29 00:58:34 25 4
gpt4 key购买 nike

我正在尝试从 Fitbit 服务器获取 JSON 数据并打印它。当我运行第一个函数时,我总是得到 nil。但是,当我运行第二个函数时,它会正确打印数据。我猜这与 iPhone 从服务器获取 JSON 所需的时间有关,但我完全不知道如何解决它。我的最终目标是返回数据,但显然我无法从完成处理程序中执行此操作。

static func getFitbitData(resource: ResourcePath, date: Date) -> Int? {
var rawData: NSData?
let request = oauth.request(forURL: NSURL(string: "https://api.fitbit.com/1/user/-/\(resource.rawValue)/date/\(date.toString())/1d.json")!)
let task = oauth.session.dataTaskWithRequest(request) { data, response, error in
if error != nil {
print("[ERROR] An error occured during request: \(error)")
}
else {
print("[SUCCESS] Data retrieved successfully")
rawData = data!
}
}
task.resume()
return ParsingEngine.parseFitbitData(ResourcePath.calories, data: rawData!)
}



static func getFitbitData(resource: ResourcePath, date: Date) -> Int? {
let request = oauth.request(forURL: NSURL(string: "https://api.fitbit.com/1/user/-/\(resource.rawValue)/date/\(date.toString())/1d.json")!)
let task = oauth.session.dataTaskWithRequest(request) { data, response, error in
if error != nil {
print("[ERROR] An error occured during request: \(error)")
}
else {
print("[SUCCESS] Data retrieved successfully")
print(ParsingEngine.parseFitbitData(ResourcePath.calories, data: data!))
}
}
task.resume()
return nil
}

最佳答案

您说得对,该函数在您的数据从服务器填充之前就返回了。为什么你不能从完成处理程序中做到这一点?这应该有效:

static func getFitbitData(resource: ResourcePath, date: Date, completion: (data: Int?) -> Void) {
var rawData: NSData?
let request = oauth.request(forURL: NSURL(string: "https://api.fitbit.com/1/user/-/\(resource.rawValue)/date/\(date.toString())/1d.json")!)
let task = oauth.session.dataTaskWithRequest(request) { data, response, error in
if error != nil {
print("[ERROR] An error occured during request: \(error)")
}
else {
print("[SUCCESS] Data retrieved successfully")
let endData = ParsingEngine.parseFitbitData(ResourcePath.calories, data: data!)
completion(endData)
}
}
task.resume()
}

你可以这样调用它:

FitbitService.getFitbitData(myResource, date: myDate) { data in
//work with your data here
}

关于ios - 方法总是返回 Nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313357/

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