【问题标题】:How to search from array of SwiftyJSON objects?如何从 SwiftyJSON 对象数组中搜索?
【发布时间】:2016-05-28 07:25:54
【问题描述】:

我有一个 SwiftyJSON 对象。

如何从SwiftyJSON对象的数组中按key(name)搜索。

例如:

let arrCountry = [JSON]()

现在一个国家数组包含

{
    countryid : "1"
    name : "New York"
},
{
    countryid : "2"
    name : "Sydeny"
}

如何通过谓词或其他东西进行搜索?

如果我从数组中搜索“y”,那么它应该在另一个 JSON 数组中返回两个对象(因为两者都包含“y”)。如果我输入“Syd”,那么它应该只返回 JSON 数组中的一个对象。作为 SQL 中的 LIKE 查询。正如我们对谓词所做的那样......

【问题讨论】:

    标签: ios swift swifty-json


    【解决方案1】:

    使用arrayObjectJSON对象中获取数组,将其转换为正确的类型并应用filter函数,在此示例中查找namedef的项目

    if let array = arrCountry.arrayObject as? [[String:String]],
       foundItem = array.first(where: { $0["name"] == "def"}) {
       print(foundItem)
    }
    

    编辑:对于带有NSPredicateJSON 结果的精确搜索,请使用此

    let searchText = "y"
    let searchPredicate = NSPredicate(format: "name contains[cd] %@", searchText)
    if let array = arrCountry.arrayObject as? [[String:String]] {
        let foundItems = JSON(array.filter{ searchPredicate.evaluateWithObject($0) })
        print(foundItems)
    }
    

    【讨论】:

    • 我想要返回搜索到的 JSON 对象。我想找到名称中可用的任何字符,然后它应该返回该对象。
    • 那么请问一个更具体的问题。
    • 它给出错误:“[JSON]”类型的值没有成员“arrayObject”
    • @HardikShekhat 如果对象的类型为[JSON],它必须有一个成员arrayObject。您是否使用与您的 Swift 版本匹配的 SwiftyJSON 库?
    • @vadian 如果我的 swiftyjson 数组包含 [[String:Any]] 我该怎么办。
    【解决方案2】:

    您需要从 JSON 对象中提取字典数组,然后您可以将谓词应用于该数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-23
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多