【发布时间】:2016-02-16 15:20:21
【问题描述】:
我正在尝试在 Swift 中发出 http 请求,获取 JSON 作为响应并将其保存(从中获取所需的数据并以某种方式在屏幕上显示)
我正在提出这样的要求
func makeRequest(base: String, completionHandler: (JSON?, ErrorType?) -> Void){
do {
let opt = try HTTP.GET(baseUrl + "?base=" + base)
opt.start { response in
if let err = response.error {
completionHandler(nil, err)
return }
do {
let json = try JSON(data: response.data)
completionHandler(json, nil)
return
}
catch {
completionHandler(nil, nil)
return
}
}
} catch let error {
completionHandler(nil, error)
}
}
我这样调用“makeRequest”函数
func convert(value:Double, startCurrency:Currency, targetCurrency:Currency) -> (converted: Double, endCurrency: Currency) {
let api = ApiManager()
api.makeRequest(firstType, completionHandler: { (json:JSON?, error:ErrorType?) in
// how to save the JSON in here?
})
//calculate the correct value using the data from the json and return it
return (0.0, targetCurrency)
}
我是 Swift 的新手,从“api.makeRequest”获取变量“json”后,我不确定如何存储它... 我在“关闭”中对它所做的一切都留在那里(就像它应该的那样)...... 如何存储它以供“转换”函数返回?
我的方法完全错误吗?
【问题讨论】:
-
如果您想简单地处理您的值,您可以编写一个新函数,从您的完成处理程序中获取您的 json 对象。否则,您可以从您的 json 创建一个对象字典并将其存储在 NSUserDefaults 或 CoreData 中。或者,也可以缓存该值以备后用。