【问题标题】:How to exclude the result of the specified keyword如何排除指定关键字的结果
【发布时间】:2021-01-16 11:47:26
【问题描述】:

我想从 json 结果中指定一些关键字并排除结果。 (比如图片中,我想排除两个麦当劳名字的结果。)我搜索了各种,但我不知道该怎么做。

谢谢!

json.results

for i in 0...totalHitCount - 1{
    if json["results"][i]["geometry"]["location"]["lat"] != "" &&
    json["results"][i]["geometry"]["location"]["lng"] != "" &&
    json["results"][i]["name"] != "" {
        let extractedExpr = ShopData(lat: json["results"][i]["geometry"]["location"]["lat"].double,lng:json["results"][i]["geometry"]["location"]["lng"].double,name:json["results"][i]["name"].string)
        print(json["results"][i]["name"].string)
        let shopData = extractedExpr
        self.shopDataArray.append(shopData)
        print(self.shopDataArray.debugDescription)
    }

    else{
        print("")
    }

}

【问题讨论】:

    标签: json swift google-places-api


    【解决方案1】:

    为了过滤某些名称创建一个黑名单,内容可以只是名称的一部分,例如

    let blackList = ["McDonald", "Kentucky"]
    

    然后过滤

    • latlong 存在

    • name 存在且不为空

    • blacklist 不包含name

      let results = json["results"].arrayValue
      for result in results {
          let location = result["geometry"]["location"]
          if let lat = location["lat"].double,
              let lng = location["lng"].double,
              let name = result["name"].string, !name.isEmpty,
              !blackList.contains(where: { name.contains($0) }) {
      
              let extractedExpr = ShopData(lat: lat, lng: lng, name: name)
              print(name)
              let shopData = extractedExpr
              self.shopDataArray.append(shopData)
              print(self.shopDataArray.debugDescription)
      
          } else {
              print(result)
          }
      }
      

    代码有点更快捷,强烈建议您放弃SwiftyJSON,转而使用Codable

    【讨论】:

    • 感谢您如此礼貌而彻底的解释,Vadian。我会考虑使用 Codable。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2012-01-24
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多