项目的需求是后台删除某个城市之后,在浏览记录里也要删除对应的城市,这就涉及到了两个数组的比较。最笨的方法就是for循环,每个数据进行比较,删除多余的数据。利用正则表达式则比较高效率的解决这个问题,在写法上也更加简洁。
//过滤出已经删除的城市,找出在nationalArr但是不在hisArr中的数据
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF.cityID IN %@.cityID)",nationalArr];
NSArray *filter = [hisArr filteredArrayUsingPredicate:filterPredicate];
//从历史记录里删除城市,从hisArr中删除数据
NSPredicate *filterPredicate2 = [NSPredicate predicateWithFormat:@"NOT (SELF.cityID IN %@.cityID)",filter];
NSArray *filter2 = [hisArr filteredArrayUsingPredicate:filterPredicate2];
网友评论