謂詞的使用
謂詞就是通過NSPredicate給定的邏輯條件作為約束條件,完成對(duì)數(shù)據(jù)的篩選。
- 定義謂詞對(duì)象,謂詞對(duì)象中包含了過濾條件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"age<%d",30]; - 使用謂詞條件過濾數(shù)組中的元素,過濾之后返回查詢的結(jié)果
NSArray *array = [persons filteredArrayUsingPredicate:predicate]; - 可以使用&&進(jìn)行多條件過濾
predicate = [NSPredicate predicateWithFormat:@"name='1'&& age > 40"];
array = [persons filteredArrayUsingPredicate:predicate]; - 包含語句的使用
predicate = [NSPredicate predicateWithFormat:@"self.name IN {'1','2','4'} || self.age IN {30,40}"]; - 指定字符開頭和指定字符結(jié)尾,是否包含指定字符
//name以a開頭
predicate = [NSPredicate predicateWithFormat:@"name BEGINSWITH 'a'"];
//name以ba結(jié)尾
predicate = [NSPredicate predicateWithFormat:@"name ENDSWITH 'ba'"];
//name中包含字符a
predicate = [NSPredicate predicateWithFormat:@"name CONTAINS 'a'"]; - like 進(jìn)行匹配多個(gè)字符
//name中只要有s字符就滿足條件
predicate = [NSPredicate predicateWithFormat:@"name like 's'"];
//?代表一個(gè)字符 下面的查詢條件是:name中第二個(gè)字符是s的
predicate = [NSPredicate predicateWithFormat:@"name like '?s'"];
atomic 和nonatomic的區(qū)別
- atomic提供多線程安全,防止讀寫未完成的時(shí)候被另外一個(gè)線程讀寫、造成數(shù)據(jù)錯(cuò)誤
- nonatomic在自己管理內(nèi)存的環(huán)境中,解析的訪問器保留并自動(dòng)釋放返回值,若指定了nonatomic,那么訪問器只是簡單的返回這個(gè)值
- 使用atomic不是一定的線程安全,速度也比nonatomic慢
nil、Nil、NULL、NSNull區(qū)別
- nil和C語言的NULL相同,在objc/objc.h中定義。nil表示Objective-C對(duì)象的值為空。在
C語言中,指針的空值用NULL表示。在Objective-C中,nil對(duì)象調(diào)用任何方法表示什
么也不執(zhí)行,也不會(huì)崩潰。 - Nil:那么對(duì)于我們Objective-C開發(fā)來說,Nil也就代表((void *)0)。但是它是用于代表空
類的. 比如:Class myClass = Nil; - NULL: 在C語言中,NULL是無類型的,只是一個(gè)宏,它代表空. 這就是在C/C++中的
空指針。對(duì)于我們Objective-C開發(fā)來說,NULL就表示((void*)0). - NSNull:NSNull是繼承于NSObject的類型。它是很特殊的類,它表示是空,什么也不
存儲(chǔ),但是它卻是對(duì)象,只是一個(gè)占位對(duì)象。使用場景就不一樣了,比如說服務(wù)端接 又中讓我們在值為空時(shí),傳空。NSDictionry *parameters = @{@"arg1" :
@"value1",@"arg2" : arg2.isEmpty ? [NSNull null] : arg2}; - NULL、nil、Nil這三者對(duì)于Objective-C中值是一樣的,都是(void *)0,那么為什么要
區(qū)分呢?又與NSNull之間有什么區(qū)別: - NULL是宏,是對(duì)于C語言指針而使用的,表示空指針
- nil是宏,是對(duì)于Objective-C中的對(duì)象而使用的,表示對(duì)象為空
- Nil是宏,是對(duì)于Objective-C中的類而使用的,表示類指向空
- NSNull是類類型,是用于表示空的占位對(duì)象,與JS或者服務(wù)端的null類似的含意

fighting.jpg