web-dev-qa-db-fra.com

Matrice de filtres avec dictionnaires utilisant NSPredicate

Il y a un tableau avec chaque élément étant un NSDictionaryname__.

NSMutableArray *mutArr = [NSMutableArray array];

for (Person *person in persons) {
    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:person.name, @"name", person.email, @"email", nil];
    [mutArr addObject:dict];
}

self.arr = [[NSArray alloc] initWithArray:mutArr];

Comment archiver arravec son nom ou son email contient la chaîne @"filter string" en utilisant la méthode filterArrayUsingPredicate:.

Merci d'avance!

22
lu yuan

Veuillez voir l'exemple ci-dessous: 

 NSArray *array = [NSArray arrayWithObject:[NSMutableDictionary dictionaryWithObject:@"filter string" forKey:@"email"]];   // you can also do same for Name key... 
    NSArray *filteredarray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(email == %@)", @"filter string"]];
48
Nit

Regarde ça :

var customerNameDict = ["firstName":"karthi","LastName":"alagu","MiddleName":"prabhu"];
var clientNameDict = ["firstName":"Selva","LastName":"kumar","MiddleName":"m"];
var employeeNameDict = ["firstName":"karthi","LastName":"prabhu","MiddleName":"kp"];

var attributeValue = "karthi";

var arrNames:Array = [customerNameDict,clientNameDict,employeeNameDict];

var namePredicate = NSPredicate(format: "firstName like %@",attributeValue);

let filteredArray = arrNames.filter { namePredicate.evaluateWithObject($0) };
println("names = ,\(filteredArray)");
1
Sachin Nikumbh