在Swift中过滤字典的NSArray

我有一个从RESTful API中提取的字典数组。 我目前正试图根据需要过滤掉“域”等于“youtube.com”的数据。

我如何过滤掉? 我看过

results.filter({ $0["domain"] != "youtube.com" 

但不知道如何去更深入的工作。

在这里输入图像说明

在这里输入图像说明

或者,您可以使用Swift数组,将theJSON强制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()} 

使用

 func filteredArrayUsingPredicate(_ predicate: NSPredicate) -> [AnyObject] 

过滤一个NSArray实例。