我从API获取JSON。因此,我想用键SKU
存储一个特定的值。所以,我所做的是:
var skuArr = [""]
{ (response, error) in
if (error != nil)
{
print("Error \(error.debugDescription)")
}
else
{
self.coinsArr = response.arrayObject as? Array<Dictionary<String, Any>>
for i in 0 ..< (self.coinsArr?.count)!
{
self.skuArr = [response[i]["sku"].rawValue as! String]
}
}
因此,有了这个,我得到了skuArr中的数组,但是当我为0时我得到了[“ a”],而当我为1时我希望它成为了[“ a”,“ b”],但是它仅给出[“ b”],并且当循环仅以最后一个值而不是我希望作为最终结果的[“ a”,“ b”,“ c”,“ d”]结束时。如何将它们每个插入到数组中?
答案 0 :(得分:1)
首先将skuArr
声明为空字符串数组。
var skuArr = [String]()
这是Swift。有比基于丑陋索引的循环更好的方法,例如使用map
或compactMap
if let result = response.arrayObject as? Array<Dictionary<String, Any>> {
self.coinsArr = result
self.skuArr = result.compactMap{ $0["sku"] as? String }
}
又为什么coinsArr
声明为可选,因为无论如何都要强制将其拆开?强烈建议尽可能使用非可选类型。 非可选选项永远不会导致相似的意外发现nil
崩溃
答案 1 :(得分:0)
请勿使用:
@JsonDeserialize(`as` = MultiError::class)
因为它将用新值替换以前的值。
使用self.skuArr = [response[i]["sku"].rawValue as! String]
插入数组。
.append
编辑
如下更改您的初始化:
self.skuArr.append([response[i]["sku"].rawValue as! String])