我知道如何使用基于特定键的JSON数据填充表视图,但我试图弄清楚如果数据在键值中具有特定值,如何仅将数据放入表视图中对
具体来说,我的JSON文件包含一个键值对,它是: “location”:“芝加哥,IL”, “大陆”:“美国”
我希望我的表视图显示任何具有“US”大陆值的条目的位置,并且我不希望它显示任何与其关联的大陆不同的位置。
我能得到的任何帮助将不胜感激。这是我在parseJSON文件中的内容,但它目前无法完成我想做的事情。我在tableview函数
中得到一个超出范围的数组索引 func parseJSON(){
do{
let data = NSData(contentsOfURL: NSURL(string: "https://jsonblob.com/api/jsonBlob/580d0ccce4b0bcac9f837fbe")!)
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
for anItem in jsonResult as! [Dictionary<String, AnyObject>]{
let mifiContinent = anItem["continent"] as! String!
if var mifiContinent = jsonResult["US"]{
let mifiLocation = anItem["location"] as! String
let newLocation = Location(location: mifiLocation)
locationOfMifi.append(newLocation)
}
}
}
catch let error as NSError{
print(error.debugDescription)
}
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("LocationCell", forIndexPath: indexPath)as? LocationCell{
let location: Location!
location = locationOfMifi[indexPath.row]
cell.configureCell(location)
return cell
} else{
return UITableViewCell()
}
}
答案 0 :(得分:0)
只需更改过滤
collections
答案 1 :(得分:0)
您还可以尝试一些快速语法来帮助您完成所做的事情。您必须稍微修改配置您的单元格。
struct Location {
var location: String?
var continent: String?
init(_ jsonResult: [String : AnyObject]) {
self.location = jsonResult["location"] as? String
self.continent = jsonResult["continent"] as? String
}
}
//defined in your class
var locationOfMifi = [Location]()
//where parsing your json result
if let jsonResult = jsonResult as? [[String : AnyObject]] {
locationOfMifi = jsonResult.map({ Location($0) }).filter({ $0.continent == "US" })
}
//your tableview datasource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return locationOfMifi.count
}