2012-08-23 5 views
21

각 요소가 NSDictionary 인 배열이 있습니다. 이름이나 이메일로 arr을 파일러하는 방법NSPredicate를 사용하는 사전이있는 필터 배열

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]; 

filterArrayUsingPredicate: 방법을 사용하여 문자열 @"filter string"이 포함되어 있습니다.

미리 감사드립니다.

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"]]; 

답변

47

아래의 예를 참조하십시오

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

확인이 아웃 :