使用NSPredicate對NSArray進行過濾
過濾數(shù)組是經(jīng)常要做的事情,最原始的方法是使用for循環(huán)進行過濾,每循環(huán)一次然后進行if判斷。這樣效率會很低,而且代碼會很臃腫症脂。iOS原生NSPredicate類給我們已經(jīng)封裝好了過濾數(shù)組的方法,大家一起來看一下代碼吧淫僻。(如果你已經(jīng)知道了诱篷,請無視~)
需求:假設一個數(shù)組中存放著若干個實體類:A
A中有id,name雳灵,age這三個屬性棕所,現(xiàn)在需要拿到age為18的數(shù)據(jù)。
代碼實現(xiàn):
NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF.age = %@",@"18"];
NSArray *array_18 = [arrayfilteredArrayUsingPredicate:pred];
array_18就是age為18的數(shù)據(jù)了悯辙。
如果是要知道age>18的數(shù)據(jù)琳省,則改成:
[NSPredicatepredicateWithFormat:@"SELF.age.intValue > 18"];
是不是很簡單迎吵?就兩句話搞定。
其實這只是NSPredicate的一個很小的功能针贬,他的強大超乎想象击费,就像Oracle中的SQL查詢語句一樣強大。
其他的功能就不再多贅述了桦他,別人已經(jīng)總結(jié)好啦蔫巩,上鏈接:http://blog.csdn.net/ztp800201/article/details/8116081