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

时间:2016-05-28 07:25:55

标签: ios swift swifty-json

我有一个SwiftyJSON对象。

如何从SwiftyJSON对象的数组中按键(名称)进行搜索。

例如:

let arrCountry = [JSON]()

现在一个国家/地区数组包含

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

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

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

2 个答案:

答案 0 :(得分:9)

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

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)
}

答案 1 :(得分:0)

您需要从JSON对象中提取字典数组,并且可以将Predicate应用于该数组。