【发布时间】:2016-09-28 22:00:07
【问题描述】:
我正在尝试使用 swift 库 Dollar (https://github.com/ankurp/Dollar) 从基于 submission_id 的数组(称为 array)中提取变量(safety_rating_id、score 等) find 方法,以便我以后可以使用它们发出 POST 请求(最终,我希望能够用拉取的数组变量替换参数中的硬编码值),但我来自 find 的结果都返回 nil。
这些是我想要的内部数组,其中 submission_id 是来自此数组 https://codeshare.io/zr1pw 的 27(第 22-36 行):
{
"submission_id" : "27",
"name" : "Equipment",
"task_id" : "37",
"points" : "10",
"safety_rating_id" : 105,
"score" : "9"
}, {
"submission_id" : "27",
"name" : "Emergency Equipment",
"task_id" : "37",
"points" : "10",
"safety_rating_id" : 106,
"score" : "9"
}
代码:
var array: [JSON] = []
func submitScore(onCompletion: () -> (), onError: ((NSError) -> ())? = nil) {
guard let endPoint = Data.sharedInstance.submitScoreEndpoint
else { print("Empty endpoint"); return }
let user = Users()
let test = $.find(self.array, callback: { $0 == 27 })
print(test)
let Auth_header = [
"Authorization" : user.token,
]
let parameters: [String:Array<[String:Int]>] = [
"ratings" : [
[
"safety_rating_id" : 105,
"schedule_job_id" : 18,
"score" : 9,
"submission_id" : 27
],
[
"safety_rating_id" : 106,
"schedule_job_id" : 18,
"score" : 10,
"submission_id" : 27
]
]
]
Alamofire.request(.POST, endPoint, headers: Auth_header, parameters: parameters, encoding: .JSON)
.validate()
.responseJSON {
response in
switch response.result {
case .Success(let data):
let json = JSON(data)
print(json)
onCompletion()
case .Failure(let error):
print("Request failed with error: \(error)")
onError?(error)
}
}
}
更新
我能够使用submission_id 27 获取数组,但我想从两个submission_id : 27 数组中删除name 和task_id AND 添加一个schedule_job_id 我从别处得到。
我尝试使用for in 循环从我想要的变量创建我自己的数组,但我不断收到nil 崩溃。这是新数组的样子https://codeshare.io/3VJSo
最后我想做一个"ratings" : [chosenArray]
【问题讨论】:
-
你为什么要给
.validate()打两次电话? -
哦,我没注意到,谢谢指出
-
你还有一个类似的问题,我已经回答了:stackoverflow.com/questions/37540689/…
标签: ios arrays alamofire swifty-json dollar.swift