如何从 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】:使用arrayObject
从JSON
对象中获取数组,将其转换为正确的类型并应用filter
函数,在此示例中查找name
为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)
【讨论】:
我想要返回搜索到的 JSON 对象。我想找到名称中可用的任何字符,然后它应该返回该对象。 那么请问一个更具体的问题。 它给出错误:“[JSON]”类型的值没有成员“arrayObject” @HardikShekhat 如果对象的类型为[JSON]
,它必须有一个成员arrayObject
。您是否使用与您的 Swift 版本匹配的 SwiftyJSON
库?
@vadian 如果我的 swiftyjson 数组包含 [[String:Any]] 我该怎么办。【参考方案2】:
您需要从 JSON 对象中提取字典数组,然后您可以将谓词应用于该数组。
【讨论】:
以上是关于如何从 SwiftyJSON 对象数组中搜索?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SwiftyJSON 在 Swift 中解析这个 JSON 对象?
使用swiftyjson从索引对象数组ios中检索json的标题