主要是對於nspredicate的介紹
:一、nspredicate的基本語法;二 使用coredata查詢資料:謂詞過濾,排序操作
一、nspredicate的基本語法
nspredicate類是用來定義邏輯條件約束的獲取或記憶體中的過濾搜尋。
可以使用謂詞來表示邏輯條件,用於描述物件永續性儲存在記憶體中的物件過濾。其實意思就是:我是乙個過濾器,不符合條件的都滾開。
我們使用一門語言,無論是外語還是計算機語言,總是從語法開始的,這樣我們才能正確的把握邏輯。所以我們從語法開始說起。在這部分我們僅關心其語法的使用
只要我們使用謂詞(nspredicate)都需要為謂詞定義謂詞表示式,而這個表示式必須是乙個返回bool的值。
謂詞表示式由表示式、運算子和值構成。
二 使用coredata查詢資料:謂詞過濾,排序操作
- (void)_query
// 方法二
// 通過對映物件獲取(常用)
// nsarray * array = [self.context executefetchrequest:request error:nil];
// for (student * student in array)
// 方法三
通過子類的kvc方式查詢
// nsarray * array = [self.context executefetchrequest:request error:nil];
// for (student * student in array)
//
// 謂詞過濾
// 過濾其他查詢
// 1、
<,>,=
nspredicate * predict = [nspredicate predicatewithformat:@"name = lisi"];//錯誤寫法
nspredicate * predict = [nspredicate predicatewithformat:@"name = %@", @"lisi"];//正確寫法
// nspredicate * predict = [nspredicate predicatewithformat:@"name = 'lisi'"];//正確寫法
// request.predicate = predict;//不賦值就是對全部內容操作
// 2.like
// nspredicate * predict = [nspredicate predicatewithformat:@"name like %@", @"*lisi*"];//注意使用的是*
// request.predicate = predict;
// 3.and,or
// nspredicate * predict = [nspredicate predicatewithformat:@"name = 'lisi' and age = 56"];
// nspredicate * predict = [nspredicate predicatewithformat:@"name = %@ and age = %i", @"lisi", 56];
// nspredicate * predict = [nspredicate predicatewithformat:@"name = %@ && age = %i", @"lisi", 56];
// request.predicate = predict;
// 4.in
// nspredicate * predict = [nspredicate predicatewithformat:@"name in%@", @[@"lisi", @"zhangsanlisi"]];
// request.predicate = predict;
// 5.between
// 使用字串的方式
// nspredicate * predict = [nspredicate predicatewithformat:@"age between "];
// nspredicate * predict = [nspredicate predicatewithformat:@"age between "];
// 或者使用陣列的方式
// nspredicate * predict = [nspredicate predicatewithformat:@"age between %@", @[@22, @24]];//兩個數倒過來就查不出來了
// predict = [nspredicate predicatewithformat:predict.predicateformat];
// nslog(@"%@", predict.predicateformat);//列印predict的字串
// request.predicate = predict;
//// 排序
// nssortdescriptor * sort = [nssortdescriptor sortdescriptorwithkey:@"age" ascending:no];
// request.sortdescriptors = @[sort];//陣列中可以放置多個sort,一般就用乙個
// 列印返回的結果
// nsarray * array = [self.context executefetchrequest:request error:nil];
// for (student * student in array)
}
coredata 分頁查詢資料
其實分頁查詢我第一反映是用sqlite的查詢語句來操作,後來想想core data底層也是呼叫sqlite,應該也是可以分頁查詢的 不過iphone開發畢竟中文資料不多,翻了下官方英文文件,找到下面的方法,主要使用下面兩個函式 1 2 3 4 限定查詢結果的數量 setfetchlimit 查詢的偏...
CoreData簡單使用
使用coredata的新建步驟 1 新建工程,選擇好coredata 2 配置coredata裡面的字段,進行關聯 然後一直往下,最後會生成2對類,現在直接看 吧!首先是插入資料的 在此插入兩條資料 userinfo user user.userid 1 user.userguid dsadsada...
CoreData的資料遷移
很多人說coredata坑多,現在才感覺到,今天上午寫 的時候,發現了乙個大問題.其實很多簡單的情況,不用這麼麻煩,coredata提供了輕量級的自動資料遷移,比如以下三個情況會自動進行 1.簡單的增加乙個字段 2.把乙個必填字段改為可選字段 3.把可選字段改為必填字段 但一定要定義預設值 1.公升...