我[[String]]
用来填充我的收藏夹视图单元格。
我使用API获取此数据:
{
identifier: {
channel: "WorldChannel",
id: 1
},
message: {
map: "[[null,null,\"penguin\",null,\"penguin\",null,null],[null,\"penguin\",\"penguin\",\"penguin\",\"orca...ll,null,\"penguin\",null,null,null],[\"penguin\",\"penguin\",\"penguin\",null,null,null,null,null]]"
}
}
要获取地图值,请使用:
struct ResponseData: Codable {
let message: Message
}
struct Message: Codable {
let map: String
}
我尝试使用map
as,[[String]]
但是解码给了我以下错误:
CodingKeys(stringValue:“ map”,intValue:nil)],debugDescription:“预期对数组进行解码,但找到了一个字符串/数据。尽管其中包含的内容显然是二维数组,但由于map
包裹了价值,这似乎很公平" "
。
解码部分:
let jsonData = string.data(using: .utf8)!
let responseData = try! JSONDecoder().decode(ResponseData.self, from: jsonData)
mapAsString = responseData.message.map
print(maAsString!)
结果是:
[[null,"penguin","orca",...],...,[..."penguin",null,null]]
我想做的是类似的事情,mapAs2DArray = mapAsString as! [[String]]
但是Xcode说它总是失败。如何更改数据类型?如何替换null
为nil
或使用其他任何值?
您需要将json字符串转换为数组
let data = Data(responseData.message.map.utf8)
let arr = try JSONDecoder().decode([[String?]].self,from:data)
let filtered = arr.map { $0.compactMap{ $0 } } // remove null values
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句