【发布时间】:2017-08-30 14:49:47
【问题描述】:
我尝试将过滤后的数据转换为数组格式,它在 swift3 中显示一行的数组。检查我下面的代码。
func serviceTest(){
let stringurl = "http://beta.json-generator.com/api/json/get/4JjQJ50O7"
let url = URL(string: stringurl)!
URLSession.shared.dataTask(with: url, completionHandler: {(data,response, error) in
guard data != nil else { return }
do{
var filterData:[String:Any] = [:]
var clusterData:[[String:Any]] = [[:]]
let json:[[String:Any]] = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [[String : Any]]
clusterData = json
var keyValue = ""
for cluster in clusterData
{
keyValue = cluster["Tag"] as! String
self.arr.append(keyValue)
var myArr = cluster["Feature"] as? AnyObject
var myA = [Any]()
myA = [myArr!]
var strArr = ""
for var i in 0...(myArr?.count)!-1 {
let m = myArr?[i] as AnyObject
let n = m["Name"] as AnyObject
let o = m["Tags"] as AnyObject
var oS = String(describing: o)
let nS = String(describing: n)
strArr = (nS as! String)+","+strArr
self.subArr = [strArr]
}
print("\(keyValue):\(self.subArr)")
print("---------------------")
self.sArr.append(self.subArr)
}
print("*********************************")
print("\(self.sArr)")
print("*********************************")
print("tcount:\(self.sArr.count)")
print(self.arr)
print("count:",self.arr.count)
DispatchQueue.main.async {
self.tableView.reloadData()
}
}catch {
}
}).resume()
}
需要的输出:
Hybrid:["Moto",Lenovo","Infocus"]
---------------------
FingerPrint:["Kult","Redmi","Lenovo"]
---------------------
Security:["Nokia","Microsoft","Moto"]
---------------------
Cloud:["Microsoft","Samsung"]
---------------------
Analytics:["Lenovo"]
---------------------
我的输出:
Hybrid:["Moto,Lenovo,Infocus,"]
---------------------
FingerPrint:["Kult,Redmi,Lenovo,"]
---------------------
Security:["Nokia,Microsoft,Moto,"]
---------------------
Cloud:["Microsoft,Samsung,"]
---------------------
Analytics:["Lenovo,"]
---------------------
【问题讨论】:
-
只需使用
String.components(separatedBy: ",")从单个字符串中获取字符串数组。