iOS谓词筛选

先用一个便于理解的方法, 表达出想要的结果

首先说一下需要的数据

(根据城市的名字, 城市的拼音, 城市的首字母筛选是否有查找的城市)

ZHCity模型 模型中有name(城市名字), pinYin(城市的拼音), pinYinHead(城市首字母)

一个可变的数组(属性): self.resultCities

一个正常的思路

self.resultCities = [NSMutableArray array];
                
                for (ZHCity *city in self.cities)
                {
                    // 城市的name中包含了searchText
                    // 城市的pinYin中包含了searchText
                    // 城市的pinYinHead中包含了searchText
                    if ([city.name containsString:searchText] || [city.pinYin containsString:searchText] || [city.pinYinHead containsString:searchText])
                    {  
                        [self.resultCities addObject:city];  
                    }  
                }

下面用一个新知识点解决上面的问题
谓词\过滤器: 利用一定条件从一个数组中过滤出想要的数据


                
                // 这个有点类似sql语句
                NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains %@ or pinYin contains %@ or pinYinHead contains %@", searchText, searchText, searchText]; // name\pinYin\pinYinHead不是随便写的, 是模型中的属性; contains是包含后面%@这个字符串
                self.resultCities = [self.cities filteredArrayUsingPredicate:predicate]; // 这个self.resultCities可以是一个不可变数组
                
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性...
    克鲁德李阅读 457评论 0 0
  • 就像我之前说的,钓鱼对小时候的我来说是一种莫大的乐趣。当然不是用你想象的那种专业的钓鱼工具,那多没意思! 我们的工...
    6ab665a250b5阅读 302评论 0 0
  • 01 最近,因老板名下的两家公司合资并股,人力资源部门和团队重新整合,工作职能有了较大变化,加之人手不够,工作一直...
    静待花开的声音阅读 1,368评论 6 17