Фильтр NSArray NSDictionary, где словарь имеет тип - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть NSArray, подобный этому

[{"268": {"name": "abc", "age": "28"}}, {"267": {"name ":" xyz "," age ":" 25 "}}]

Теперь я хочу отфильтровать его по имени ключей (средства 268, 267).Например: если пользователь ищет 7, он должен показать

[{"267": {"name": "xyz", "age": "25"}}]

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы можете использовать NSPredicate с блоком в Objective-C для его фильтрации:

  NSString *searchText = @"8";
  NSArray *data = @[@{ @"268" : @{ @"name" : @"abc", @"age" : @"28"} }, @{ @"267" : @{ @"name" : @"xyz",@"age" : @"25"}}];
  NSPredicate *predicate = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind) {
    NSDictionary *dict = (NSDictionary *)obj;
    NSString *key = dict.allKeys.firstObject;
    return [key containsString:searchText];
  }];
  NSArray *filteredData = [data filteredArrayUsingPredicate:predicate];
0 голосов
/ 26 сентября 2018
let filterText : String = "7"

let array : [Dictionary<String,Any>] = [ ["268" : [ "name" : "abc", "age" : "28"]], [ "267" : [ "name" : "xyz","age" : "25"] ] ]

let result = array.filter { (dictinory) -> Bool in
    if let firstKey = dictinory.keys.first {
            return firstKey.contains(filterText)
    }
    return false
}
...