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

4

我有一个 SwiftyJSON 对象。

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

例如:

let arrCountry = [JSON]()

现在一个国家的数组包含:
{
    countryid : "1"
    name : "New York"
},
{
    countryid : "2"
    name : "Sydeny"
}

如何按谓词或其他方式搜索?

如果我从数组中搜索“y”,则应在另一个JSON数组中返回两个对象(因为两个都包含“y”)。如果我输入“Syd”,则应仅在JSON数组中返回一个对象。就像SQL中的LIKE查询一样。而我们正在使用谓词...

2个回答

10

使用arrayObjectJSON对象中获取数组,将其转换为适当的类型并应用filter函数,在本例中查找名称为def的项。

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

编辑:要使用NSPredicate进行精细搜索并获得JSON结果,请使用此内容。

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

那请问一个更具体的问题。 - vadian
@vadian 如果我的 SwiftyJSON 数组包含 [[String:Any]],我应该怎么做? - Pramod Tapaniya
然后你需要进行类型转换 as? [[String:Any]],以及使用 array.first(where: { $0["name"] as! String == "def" }) - vadian
请提出一个新问题。顺便说一下,这个对象是[String:[Int]] - vadian
显示剩余3条评论

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接