1
我从FatSecret API获取数据。简而言之,我有几个食物ID需要从中获取数据,迭代它们以将卡路里加在一起。每个人都必须是一个单独的电话。由于这些不会在主线程中运行,因此确定它们何时完成的最佳方法是什么?目前,我使用每次调用完成时迭代一次的变量来追踪它,但我觉得可能有更好的方法。迭代APi结果的最佳方式是什么,并知道何时完成?
for thisFoodId in foodIds {
let endpointURL = <URL WITH FOODID>
guard let url = URL(string: endpointURL) else {
return
}
let urlRequest = URLRequest(url: url)
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let task = session.dataTask(with: urlRequest, completionHandler: {
(data, response, error) in
guard error == nil else {
return
}
guard let responseData = data else {
return
}
do {
guard let thisData = try JSONSerialization.jsonObject(with: responseData, options: []) as? [String: AnyObject] else {
return
}
let calories = thisData["calories"]
self.totalCalories += calories
tracker += 1
if tracker == foodIds.count {
// RUN COMPLETION CODE
}
}
}
这正是我一直在寻找。谢谢! – user1328035
不客气!祝你的项目好运:) – Alex