我有一个从RESTful API中提取的字典数组。我目前正在尝试根据需要过滤掉“域名”等于“youtube.com”的数据。
如何过滤掉这个?我已经调查了
results.filter({
$0["domain"] != "youtube.com"
但不确定如何更深入地让它发挥作用。
答案 0 :(得分:1)
或者,您可以使用Swift数组,将theJSON
投射到[[String: AnyObject]]
而不是NSMutableArray
。然后,您不必投射results
。然后你可以使用filter
。
在Swift 1.2中,可能是:
let task = session.dataTaskWithURL(url) { data, response, error in
if error != nil || data == nil {
print(error)
return
}
var parseError: NSError?
if let resultObject = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions(rawValue: 0), error: &parseError) as? [[String: AnyObject]] {
let results = resultObject.filter() { ($0["data"]?["domain"] as? String) != "youtube.com" }
dispatch_async(dispatch_get_main_queue()) {
// use results here
}
} else {
print(parseError)
return
}
}
task.resume()
或者,在Swift 2中:
let task = session.dataTaskWithURL(url) { data, response, error in
guard data != nil && error == nil else {
print(error)
return
}
do {
let resultObject = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [[String: AnyObject]]
let results = resultObject?.filter() { ($0["data"]?["domain"] as? String) != "youtube.com" }
dispatch_async(dispatch_get_main_queue()) {
// use results here
}
} catch let parseError {
print(parseError)
}
}
task.resume()}
答案 1 :(得分:0)
使用
func filteredArrayUsingPredicate(_ predicate: NSPredicate) -> [AnyObject]
过滤NSArray实例。