iOS CoreData排序之 NSFetchRequest

weixin_34037977發表於2018-08-03

http://www.cnblogs.com/karling/p/5033525.html
https://blog.csdn.net/a724765518/article/details/41893803
http://www.cnblogs.com/fortunely/p/4725982.html

不寫程式碼了,補充幾點:

  • 不使用任何排序的話,預設按照先入先出順序,最早錄入的資訊在查詢陣列最開頭,如果想倒敘的話,把陣列反向遍歷即可
  • 並不通過條件類 NSPredicate 來排序
  • 使用單獨的 NSFetchRequest 來排序,排序使用的是建立的內容比較
  • coredata 沒有自動id, 所以不需要用order by id這樣的想法來排序

根據時間排序

資料表key設定為 NSDate 型別即可

NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"YourEntityName" inManagedObjectContext:yourContext];
NSPredicate *beginningPredicate = [NSPredicate predicateWithFormat:@"createdAt >= %@", beginningTime];
NSPredicate *endPredicate = [NSPredicate predicateWithFormat:@"createdAt <= %@", endTime];
request.predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:beginningPredicate, endPredicate, nil]];
NSArray *results = [yourContext executeFetchRequest:request error:NULL];

相關文章