-
1祭犯、用
set
處理:[[self.loginBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) { NSArray *arrayOne = @[@"1", @"2", @"3", @"4"]; NSArray *arrayTwo = @[@"3", @"4", @"5", @"6"]; NSMutableSet *setOne = [NSMutableSet setWithArray:arrayOne]; NSMutableSet *setTwo = [NSMutableSet setWithArray:arrayTwo]; // 取重疊的元素 // [setOne intersectSet:setTwo]; // 取出差異元素席纽,setOne 剩下[@"1", @"2"] [setOne minusSet:setTwo]; NSMutableSet *anotherSetOne = [NSMutableSet setWithArray:arrayOne]; [setTwo minusSet:anotherSetOne]; // setTwo 即為兩個數(shù)組差異化元素的集合 [setTwo unionSet:setOne]; }];
-
2蛤克、用 謂詞 處理:
NSArray *arrayOne = @[@"1", @"2", @"3", @"4"]; NSArray *arrayTwo = @[@"3", @"4", @"5", @"6"]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", arrayOne]; NSArray *sameArray = [arrayTwo filteredArrayUsingPredicate:predicate]; NSLog(@"%@", sameArray); NSMutableArray *muArrayOne = [NSMutableArray arrayWithArray:arrayOne]; NSMutableArray *muArrayTwo = [NSMutableArray arrayWithArray:arrayTwo]; [muArrayOne removeObjectsInArray:sameArray]; [muArrayTwo removeObjectsInArray:sameArray]; NSArray *unsameArray = [muArrayOne arrayByAddingObjectsFromArray:muArrayTwo]; NSLog(@"unsameArray: %@", unsameArray);
拓展:
保留關(guān)鍵字: 使用的時候炕婶,不區(qū)分大小寫裸影。
AND注整、OR萍桌、IN宵溅、NOT、ALL上炎、ANY恃逻、SOME、NONE藕施、LIKE寇损、CASEINSENSITIVE、CI铅碍、MATCHES润绵、CONTAINS、BEGINSWITH胞谈、ENDSWITH、BETWEEN、NULL烦绳、NIL卿捎、SELF、TRUE径密、YES午阵、FALSE、NO底桂、FIRST、LAST惧眠、SIZE、ANYKEY氛魁、SUBQUERY暮顺、CAST秀存、TRUEPREDICATE、FALSEPREDICATE
-
1或链、比較運(yùn)算符
=惫恼、==:判斷兩個表達(dá)式是否相等澳盐,在謂詞中=和==是相同的意思都是判斷,而沒有賦值這一說 >=洞就,=>:判斷左邊表達(dá)式的值是否大于或等于右邊表達(dá)式的值 <=盆繁,=<:判斷右邊表達(dá)式的值是否小于或等于右邊表達(dá)式的值 >:判斷左邊表達(dá)式的值是否大于右邊表達(dá)式的值 <:判斷左邊表達(dá)式的值是否小于右邊表達(dá)式的值 !=旬蟋、<>:判斷兩個表達(dá)式是否不相等 BETWEEN:BETWEEN表達(dá)式必須滿足表達(dá)式 BETWEEN {下限油昂,上限}的格式,要求該表達(dá)式必須大于或等于下限倾贰,并小于或等于上限
-
2冕碟、邏輯運(yùn)算符
AND、&&:邏輯與匆浙,要求兩個表達(dá)式的值都為YES時安寺,結(jié)果才為YES。 OR首尼、||:邏輯或挑庶,要求其中一個表達(dá)式為YES時言秸,結(jié)果就是YES NOT、 !:邏輯非迎捺,對原有的表達(dá)式取反
-
3举畸、字符串比較運(yùn)算符
BEGINSWITH:檢查某個字符串是否以指定的字符串開頭(如判斷字符串是否 以a開頭:BEGINSWITH 'a') ENDSWITH:檢查某個字符串是否以指定的字符串結(jié)尾 CONTAINS:檢查某個字符串是否包含指定的字符串 LIKE:檢查某個字符串是否匹配指定的字符串模板。 其之后可以跟?代表一個字符和*代表任意多個字符兩個通配符凳枝。比如"name LIKE '*ac*'"抄沮,這表示name的值中包含ac則返回YES; "name LIKE '?ac*'"岖瑰,表示name的第2叛买、3個字符為ac時返回YES。 MATCHES:檢查某個字符串是否匹配指定的正則表達(dá)式蹋订。雖然正則表達(dá)式的執(zhí)行效率是最低的率挣,但其功能是最強(qiáng)大的,也是我們最常用的辅辩。
示例:
DataModel *Lily = [DataModel configModelWithName:@"Lily" sex:@"women" age:18]; NSPredicate *sexPredicate = [NSPredicate predicateWithFormat:@"sex like '?ily'"]; NSPredicate *agePredicate = [NSPredicate predicateWithFormat:@"age >= 10"]; BOOL sexResult = [sexPredicate evaluateWithObject:Lily]; // 0 BOOL ageResult = [agePredicate evaluateWithObject:Lily]; // 1
注:字符串比較都是區(qū)分大小寫和重音符號的难礼。如果希望字符串比較運(yùn)算不區(qū)分大小寫和重音符號,請在這些運(yùn)算符后使用
[c]
玫锋,[d]
選項蛾茉。其中[c]
是不區(qū)分大小寫,[d]
是不區(qū)分重音符號撩鹿,其寫在字符串比較運(yùn)算符之后谦炬,比如:name LIKE[cd] 'cafe'
,那么不論name是cafe节沦、Cafe還是café上面的表達(dá)式都會返回YES
键思。 -
4、集合運(yùn)算符
ANY甫贯、SOME:集合中任意一個元素滿足條件吼鳞,就返回YES。 ALL:集合中所有元素都滿足條件叫搁,才返回YES赔桌。 NONE:集合中沒有任何元素滿足條件就返回YES。如:NONE person.age < 18渴逻,表示person集合中所有元素的age>=18時疾党,才返回YES。 IN:等價于SQL語句中的IN運(yùn)算符惨奕,只有當(dāng)左邊表達(dá)式或值出現(xiàn)在右邊的集合中才會返回YES雪位。
-
5、直接量:在謂詞表達(dá)式中可以使用如下直接量雹洗。
FALSE香罐、NO:代表邏輯假 TRUE穴吹、YES:代表邏輯真 NULL幽勒、NIL:代表空值 SELF:代表正在被判斷的對象自身 "string"或'string':代表字符串 數(shù)組:和c中的寫法相同,如:{'one', 'two', 'three'}啥容。 數(shù)值:包括證書、小數(shù)和科學(xué)計數(shù)法表示的形式 十六進(jìn)制數(shù):0x開頭的數(shù)字 八進(jìn)制:0o開頭的數(shù)字 二進(jìn)制:0b開頭的數(shù)字
參考:
iOS開發(fā)-最優(yōu)辦法查找兩個數(shù)組相同與不同的數(shù)據(jù)
iOS中的謂詞(NSPredicate)使用