使用CoreData查詢資料 謂詞過濾,排序操作

2021-07-28 14:44:43 字數 2936 閱讀 4263

主要是對於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.公升...