如何从 SwiftyJSON 对象数组中搜索?

Posted

技术标签:

【中文标题】如何从 SwiftyJSON 对象数组中搜索?【英文标题】:How to search from array of SwiftyJSON objects? 【发布时间】: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 查询。正如我们对谓词所做的那样......

【问题讨论】:

【参考方案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 对象中提取字典数组,然后您可以将谓词应用于该数组。

【讨论】:

以上是关于如何从 SwiftyJSON 对象数组中搜索?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SwiftyJSON 在 Swift 中解析这个 JSON 对象?

使用swiftyjson从索引对象数组ios中检索json的标题

SwiftyJson 添加到对象/数组的末尾

使用 SwiftyJSON 反序列化时如何添加对象数组

如何使用 SwiftyJSON 从 JSON 对象中获取 JSON 密钥?

使用 SwiftyJSON 将 JSON 数组反序列化为 Swift 对象