首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OC学习14——谓词

一、谓词基本概念使用 1、谓词(NSPredicate)用于定义一个逻辑条件,通过该条件可执行搜索或内存中过滤操作。上一篇文章中介绍集合都提供了使用谓词对集合进行过滤方法。...OC中谓词操作是针对于数组类型,他就好比数据库中查询操作,数据源就是数组,这样好处是我们不需要编写很多代码就可以去操作数组,同时也起到过滤作用,我们可以编写简单谓词语句,就可以从数组中过滤出我们想要数据...在前面的程序中使用谓词对象总是固定,总是用指定对象固定属性固定进行比较,如果符合条件,则返回YES,否则返回NO。...LIKE:检查某个字符串是否匹配指定字符串模板 MATCHES:检查某个字符串是否匹配指定正则表达式   上述方法都是区分大小写,如果要不区分大小写和重音符号,则可以在运算符后面使用[c]、[d...]选项,其中[c]指定不区分大小写,[d]指定不区分重音符号。

1.1K100

iOS-谓词使用详解import typedef NS_ENUM(NSInteger, PersonSex) {

1.比较运算符 比较运算符如下 =、==:判断两个表达式是否相等,在谓词中=和==是相同意思都是判断,而不是赋值 NSNumber *testNumber = @123; NSPredicate...虽然正则表达式执行效率并不高,但其功能是最强大,也是我们最常用。 >注: 字符串比较都是区分大小写和重音符号。如:café和cafe是不一样,Cafe和cafe也是不一样。...如果希望字符串比较运算不区分大小写和重音符号,请在这些运算符后使用`[c]`,`[d]`选项。...其中`[c]`是不区分大小写,`[d]`是不区分重音符号,其写在字符串比较运算符之后,比如:`"name LIKE[cd] 'cafe'"`,那么不论`name`是cafe、Cafe还是café上面的表达式都会返回...$VALUE`是一个可以动态变化值,它其实最后是在字典中一个key,所以可以根据你需要写不同值,但是必须有$开头,随着程序改变`$VALUE`这个谓词表达式比较条件就可以动态改变。

1.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

编码篇 - 正则表达式及其相关

前言 有时我们需要在一大段长文本中过滤出我们需要字段,或者检验该文本是否符合要求(该文本是否是邮箱,链接,电话号码或身份证),这时候就需要用到正则表达式了,当然我们也可以使用 NSPredicate...文章脉络 谓词(NSPredicate) Predicate(谓语)意思。NSPredicate类是用来定义逻辑条件约束获取或内存中过滤搜索。...所以NSPredicate可以结合正则表达式语句来使用。 注:字符串比较都是区分大小写和重音符号。如:café和cafe是不一样,Cafe和cafe也是不一样。...如果希望字符串比较运算不区分大小写和重音符号,请在这些运算符后使用[c],[d]选项。...其中[c]是不区分大小写,[d]是不区分重音符号,其写在字符串比较运算符之后,比如:name LIKE[cd] 'cafe',那么不论name是cafe、Cafe还是café上面的表达式都会返回YES。

99620

30分钟摸透iOS中谓词NSPredicate来龙去脉

NSPredicate提供谓词可以分为两类:比较谓词和复合谓词。 比较谓词:比较谓词通过使用比较运算符来描述所符合条件属性状态。...复合谓词:复合谓词用来组合多个比较谓词结果,取交集,并集或补集。 对于比较谓词,可以描述精准比较可以通过范围或者包含等进行模糊比较。...NSLog函数一样来进行格式化字符串构造,可以使用%@,%d等等格式化字符来在运行时替换为变量实际值。...中其他属性方法解析如下: //创建一个总是验证通过(YES)或不通过(NO)谓词对象 /* 如果创建是验证通过,则任何检索都会成功进行返回,否则任何检索都会失败不返回任何对象 */ + (NSPredicate...= 0x01, //不区分大小写 NSDiacriticInsensitivePredicateOption = 0x02,//不区分读音符号 NSNormalizedPredicateOption

1.4K20

iOS 深思篇 | 正则表达式

有一个通识问题说明一下: "/"是 JS 中经常用来分隔一个正则开始结尾字符,其他语言中不用做此区分; 比如: /* JS */ /abc/ //精确匹配abc(有/符号)...先行断言用于判断所匹配格式是否在另一个确定格式之前, 匹配结果不包含该确定格式(仅作为约束). 例如, 我们想要获得所有跟在 符号后数字, 我们可以使用正后发断言 (?...负后发断言-排除 2.3.4 标志 标志也叫模式修正符, 因为它可以用来修改表达式搜索结果. 这些标志可以任意组合使用, 它也是整个正则表达式一部分....标志 描述 i 忽略大小写. g 全局搜索. m 多行: 锚点元字符 ^ $ 工作范围在每行起始. 2.3.5 优先级 在这些运算符同时出现时,按照下面的优先级进行操作。...NSUInteger, NSRegularExpressionOptions) { NSRegularExpressionCaseInsensitive = 1 << 0, //不区分字母大小写模式

2.9K20

iCloud Documents 详解:基础设置文件操作

欢迎大家在 Discord 频道[2] 中进行更多地交流 欢迎访问 fatbobman.substack.com[3] 订阅 Fatbobman's Swift Weekly 中英文电子邮件版本。...如果你正在开发文档类应用,可以直接参考系统提供模板和范例代码,本文中许多内容对你可能比较冗余。...NSFileCoordinator 可以确保文件系统多个访问请求得到适当协调,以避免出现数据冲突和数据损坏。...子目录中进行搜索。...在创建谓词时,不应该依赖于传统文件系统路径和逻辑,而应该使用数据匹配谓词来筛选数据。 NSMetadataQuery 会响应满足谓词任意元数据变化,开发者应根据需求提供尽可能精确谓词。

51910

Ask Apple 2022 中 Core Data 有关问答 (下)

检索 NSAttributedStringQ:我需要将 NSAttributedString 存储在数据库中,并且可以对属性字符串中任何文本进行搜索。...通过创建两个单独属性,一个包含纯文本字符串,另一个包含属性字符串 Transformable 数据是否为最好方法?是否有另一种更好方式可以不通过两个属性来减少存储数据量?...A:你使用正是当前推荐方式。此外,纯文本属性可以被 Spotlight 索引,方便它们被系统搜索。生成对应数据纯文本以进行检索,是一种很常见方式。...在某些情况下,即使属性原始内容为纯文本,也可以通过为其生成标准化版本( 忽略大小写以及变音符号版本 )以提高检索效率。...另外可以考虑使用 CloudKit API 查询云端数据条数,然后已经同步到本地记录数进行比对,获得大致同步进度( 此方式仅适用于数据模型简单,关系不太复杂情况 )。

3.2K20

【IOS开发基础系列】UISearch专题

//1.autocapitalizationType————自动对输入文本对象进行大小写设置.     ...",@"模糊搜索"];     bar.selectedScopeButtonIndex = 1;//通过下标指定默认选择那个选择栏     //7.控制搜索栏下部选择栏是否显示出来(需设置为YES...tableView,如果是显示就是搜索结果数据,   如果不是,是TableView自身view,则需要显示原始数据。...3.1.2 1)新建数据源属性 代码如下:     1)新建控制器,继承UITableViewController,在extension中定义属性 //存储原来数据 @property (nonatomic...(当搜索内容为空时,返回时所有数据,如果搜索内容为空,返回空时,需要进行其它修改操作.) 4 开发技巧 4.1 兼容IOS7、8并结合自定义导航条使用 4.1.1 核心思路         虽然UISearchController

35320

Xcode 7 自动测试XCTestCase

Swift 中,我们可以继续使用 XCTest 来进行测试,而 Swift mock 和 stub 处理,我们甚至不需要再借助于第三方框架,而使用 Swift 自身可以在方法中内嵌类型特性来完成...对于用户来说,app 功能和 UI 界面是否正确是判断这个 app 是否合格更为直接标准。而传统单元测试很难对 app 功能或者 UI 进行测试。...来区分不同 UI 元素。...因此,对于这种需要在一定时间之后再进行判断测试例,可以使用 expectationForPredicate 来对未来状态作出假设并测试在规定超时时间内是否得到理想结果。...但是相比使用 UIAutomation 在 Instruments 中用 JavaScript app 交互,我们现在可以Swift 或者 Objective-C 直接在 Xcode 里进行 UI

1.8K70

Objective-C 数组筛选

想项目有可能会遇到按照一定条件对某一个数组进行筛选。 直接遍历数组,取符合条件对象放到一个新数组效率可能不高。...下面介绍一个更简便方法来实现 简介 NSPredicate类主要用来指定过滤器条件,该对象可以准确描述所需条件,对每个对象通过谓词进行筛选,判断是否条件相匹配。...谓词是指在计算机中表示计算真假值函数。原理和用法都类似于SQL查询中where,作用相当于数据过滤取。主要用于从集合中分拣出符合条件对象或者数据模型,也可以用于字符串正则匹配....一般, NSPredicate筛选过滤条件可以是, 逻辑运算符号(> , < , =),范围运算符(IN,BETWEEN),字符包含/匹配/模糊搜索(BEGINSWITH,ENDSWITH,CONTAINS...2.判断指定对象是否满足NSPredicate创建过滤条件 [predicate evaluateWithObject:model]; 3.将array通过创建predicate进行过滤,并返回符合条件数据

1.4K10

储存篇 - CoreData使用大全

在传统项目中我们都使用OC变成,但是CoreData默认使用Swift语言,所以我们要设置回来OC,详情见图片 ? 同时需要将codegen选为Manaul/None ?...name属性中包含”lifengfeng“那条记录,注意等号必须加,可以有空格,也可以是==) NSPredicate *predicate = [NSPredicate predicateWithFormat...name属性不为“lifengfeng”数据NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name!...对象,再通过save:方法进行数据保存。...【五】关于CoreData版本迁移 应用场景:修改了实体数据结构(比如说某个实体增加了一个特性),因为APP版本更新后沙盒中NSDocumentDirectory 中缓存数据都不会被清除,这时候就要进行版本迁移了

2.5K20

SwiftDataKit:让你在 SwiftData 中使用 Core Data 高级功能

欢迎大家在 Discord 频道[2] 中进行更多地交流 SwiftData 当前困境 Core Data 相比,SwiftData 在数据模型声明、类型安全、线程安全、以及 SwiftUI 整合等多个方面进行了全面提升...其中,它基于 Swift 宏功能数据模型创建机制、类型安全谓词系统、依靠 Actor 实现线程安全以及 Observation[3] 框架紧密结合,使得 SwiftData 更符合现代编程需求...解决 SwiftData 困境思路 虽然 SwiftData 在表现上 Core Data 存在很大差异,但是它核心基础仍然是 Core Data,苹果使用了 Swift 语言新功能,用符合当代编程风格设计思想...这不仅使 SwiftData 继承了 Core Data 在数据持久化领域稳定特质,也意味着 SwiftData 部分关键组件背后对应着特定 Core Data 对象。...是否可以将 NSFetchRequest 获取 NSManagedObject 转换为 PersistentModel 在 SwiftData 中使用?

28340

iOS开发之EventKit框架应用

iOS开发之EventKit框架应用 一、关于系统日历和提醒事宜       iOS系统自带Calendar应用非常强大,用户可以在其中添加日程事件,并且其提供了接口供其他应用进行调用,可以向日历中进行事件读取和写入...使用日历和提醒事宜这两个应用,可以提高生活工作效率,例如邮件应用通过与日历交互可以将会议邮件添加到用户日程中,EventKit框架则是提供了接口这两个应用进行交互。...二、EventKit框架概览     EventKit核心用途是配合系统日历提醒应用,对事件提醒进行管理,其中核心类即结构如下: ?...从图中可以看出,重要数据管理类为EKEventStore,其他类都是用来描述对应数据,下面会一一介绍。...触发型事件 到达某个地理位置后触发 @property(nonatomic, copy, nullable) EKStructuredLocation *structuredLocation; // 另一个事件开始事件进行比较

3.9K51

WWDC 2023 Core Data 有哪些新变化

通过它,开发者可以将复杂数据类型通过自定义方式封装在一起。...开发者可以通过新 NSPredicate 构建方法,将 Predicate 转换为 NSPredicate。...在 SwiftData Core Data 并行项目中,用于比对两者是否使用相同版本数据模型。...例如,我们可以通过下面的代码获取 SwiftData 当前使用模型 versionChecksum 值,然后在 CoreDataStack 中,通过该值进行比较,就可以知道两者是否使用相同数据模型...Core Data 中,开发者最常使用以下三种数据迁移方式:轻量级迁移如果两个数据模型版本之间更改很简单,Core Data 可以自行推断映射模型,那么无需开发者提供更多信息,Core Data 将自动在两个版本中进行数据迁移

21930

SwiftDataKit:让你在 SwiftData 中使用 Core Data 高级功能

欢迎大家在 Discord 频道[2] 中进行更多地交流 SwiftData 当前困境 Core Data 相比,SwiftData 在数据模型声明、类型安全、线程安全、以及 SwiftUI 整合等多个方面进行了全面提升...其中,它基于 Swift 宏功能数据模型创建机制、类型安全谓词系统、依靠 Actor 实现线程安全以及 Observation[3] 框架紧密结合,使得 SwiftData 更符合现代编程需求...解决 SwiftData 困境思路 虽然 SwiftData 在表现上 Core Data 存在很大差异,但是它核心基础仍然是 Core Data,苹果使用了 Swift 语言新功能,用符合当代编程风格设计思想...这不仅使 SwiftData 继承了 Core Data 在数据持久化领域稳定特质,也意味着 SwiftData 部分关键组件背后对应着特定 Core Data 对象。...是否可以将 NSFetchRequest 获取 NSManagedObject 转换为 PersistentModel 在 SwiftData 中使用?

29220
领券