首页 > 其他分享 >iOS:常用的谓词

iOS:常用的谓词

时间:2023-04-21 14:25:50浏览次数:35  
标签:常用 SELF iOS compare num 谓词 print 123 true

func compare(_ predicateString: String, num: Any) -> Bool {
    let predicate = NSPredicate(format: predicateString)
    return predicate.evaluate(with: num)
}

///  比较运算
/// `>`:判定大于
/// `<`: 判定小于
/// `=`: 判定等于
/// `!=` 或 `<>`: 判定不等于
/// `>=` 或 `=>`: 判定左侧大于等于右侧
/// `<=>` 或 `=<`: 判定左侧小于等于右侧
/// `BETWEEN {a, b}`:判定是否介于 a,b 之间
print(compare("SELF > 123", num: 123))  // false
print(compare("SELF < 123", num: 123))  // false
print(compare("SELF = 123", num: 123))  // true
print(compare("SELF != 123", num: 123)) // false
print(compare("SELF <> 123", num: 123)) // false
print(compare("SELF <= 123", num: 123)) // true
print(compare("SELF =< 123", num: 123)) // true
print(compare("SELF BETWEEN {100, 200}", num: 123)) // true

///  逻辑运算
/// `AND` 或 `&&`:逻辑与
/// `OR` 或 `||`:逻辑或
/// `NOT` 或 `!`:逻辑非
print(compare("SELF > 123 && SELF < 124", num: 123))  // false
print(compare("SELF < 123 || SELF > 124", num: 123))  // false
print(compare("! (SELF < 123)", num: 123))  // true

///  字符串比较
/// `BEGINSWITH`:判定开头。
/// `ENDSWITH`:判定结尾。
/// `CONTAINS`:判定包含。
/// `LIKE`:是否匹配字符串模板。eg:SELF LIKE  '*BC*'
/// `MATCHES`:是否匹配指定的正则表达式。
print(compare("SELF BEGINSWITH 'A'", num: "ABCDE"))  // true
print(compare("SELF ENDSWITH 'E'", num: "ABCDE"))  // true
print(compare("SELF CONTAINS 'C'", num: "ABCDE"))  // true
print(compare("SELF LIKE 'ABC*'", num: "ABCDE"))  // true
print(compare("SELF LIKE '*C*'", num: "ABCDE"))  // true

///  集合运算符
/// `ANY`,`SOME`:集合中的任何一个元素满足条件就可以
/// `ALL`:集合中所有元素都满足条件
/// `NONE`:集合中没有任何元素满足条件
/// `IN`:集合中属于另一个集合中的

标签:常用,SELF,iOS,compare,num,谓词,print,123,true
From: https://www.cnblogs.com/dulinshun/p/ios-chang-yong-de-wei-ci.html

相关文章

  • 中移链合约常用开发介绍(三)工程化开发智能合约
    一、目的本文档基于中移链合约常用开发,介绍了工程化开发智能合约的方法。本文档将从自动生成项目展开,适合刚接触合约开发的开发人员入门工程化开发。二、智能合约介绍区块链作为一种分布式可信计算平台,去中心化是其最本质的特征。每笔交易的记录不可篡改地存储在区块链上。智能合约......
  • iOS:发送消息机制
    消息发送阶段:调用objc_msgSend函数,进行一些内部逻辑处理。会涉及到cache_list和method_list等。动态方法解析:允许开发者动态创建方法。消息转发:进入消息转发阶段......
  • iOS:Copy 关键字
    Copy经常使用的地方是在对属性进行描述的时候。经常使用Copy的类型,NSString,NSArray,NSDictionary,Block等NSString、NSArray,NSDictionary使用copy的原因NSString→NSMutableStringNSArray→NSMutableArrayNSDictionary→NSMutableDictionaryNSString,NSArray,NS......
  • iOS:多线程
    三个都是多线程相关的。GCD简单介绍iOS和osx的核心内核是XNU内核,GCD是基于XNU内核实现的GCD的API全部的libdispatch中GCD的底层实现主要是DispatchQueue和DispatchSourceGCD和NSOperation的区别GCD是纯C语言的API,NSOperation是基于GCD的封......
  • iOS:为什么OC 是动态语言?
    动态类型动态绑定动态加载动态类型:即运行时再决定对象的类型。编译阶段,任何对象都可以指定为id类型,等到运行时,才知道具体的类型。动态绑定:基于动态类型,即某个对象在确定后,其属性和响应消息也被完全确定。动态加载:1.动态加载资源,2可以动态添加类,方法等......
  • iOS:线程锁
    1.什么是线程锁线程锁主要是用来控制多个线程同时访问和修改,避免造成不可预期的问题。2.自旋锁和互斥锁自旋锁:一种用来保护多线程共享资源的锁,与互斥锁不同的是,当自旋锁尝试获取锁是否可用时,以忙等待进行循环检查锁是否可用。当上一个线程没有执行完毕时,下一个线程一直处于......
  • iOS:常用的正则表达式
    转载自Swift正则表达式-简书(jianshu.com)数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?......
  • iOS:use_frameworks 的作用
    Swift项目中的Podfile中默认会有一个use_frameworks!,本篇说一下use_frameworks!。1.Pod引入组件的类型iOS使用Pod引入组件,主要引入以下类型的组件。类型1:静态库类型组件。可以为`.a`或`.framework`类型的静态库。类型2:动态库类型组件。可以为`.framework`类......
  • iOS:响应链的原理
    iOS中不是所有的对象都能响应的,只有继承UIResponder的对象才能进行响应处理事件,称之为响应者对象。常见的响应者对象有:UIView,UIViewController,UIApplication响应链的流程:1.当产生某一个触摸事件的时候,这个触摸事件回添加到UIApplication管理的事件队列中。2.UIAppli......
  • iOS:字典存储数据的原理
    注:适用于Java等其他语言的技术原理存储的逻辑1.字典底层有一个数组,靠数组来存储数据;2.将key进行hash算法。得到`hash值`;3.将`hash值`与`数组的长度`进行`位与运算`,得到的结果为数据应该存储的位置;4.找到数组对应的位置,然后设置对应的数据(此处使用链表①进行......