NSFetchResultController用于对日期(dd / mm / yyyy)部分中的聊天项进行排序,每个部分再次按dd / mm / yy hh:mm:ss排序

时间:2015-11-18 11:48:04

标签: ios core-data nspredicate nsfetchedresultscontroller nsfetchrequest

我正在创建一个聊天应用程序UI,比如什么应用程序,我需要对聊天消息进行排序,并根据NSDate(DD / MM / YY)对它们进行分区。

每个不同的(DD / MM / YY)部分名称将在包含该日期的时间戳上再次排序项目。

如何在NSFetchResultsController中实现此目的。我使用Distinct Query成功实现了这一目标,以获得与DD / MM / YYYY匹配的所有聊天对象日期并查找部分名称。

然后再次向DB查询以查找与日期部分的聊天对象时间戳匹配的所有聊天,但每个聊天对象的时间不同。

但这会消耗核心数据上的大量UI /后端操作。有没有最佳方法来实现这一目标。

示例:

  

数据库中的聊天对象   聊天ID |消息文本|时间戳|发件人ID |接收者ID

     

数据示例    CHAT-001 |这是测试1消息| 22/10/2015:12:00:20 | abc.dev.abc.com | def.dev.abc.com    CHAT-002 |这是测试2消息| 22/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com    CHAT-003 |这是测试3消息| 22/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com    CHAT-004 |这是测试4消息| 22/10/2015:14:10:20 | def.dev.abc.com | abc.dev.abc.com    CHAT-005 |这是测试5消息| 23/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com    CHAT-006 |这是测试6消息| 23/10/2015:13:05:20 | abc.dev.abc.com | def.dev.abc.com    CHAT-007 |这是测试7消息| 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com    CHAT-008 |这是测试8消息| 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com

     

预期输出

     

部门名称: 22/10/2015 CHAT-001 |这是测试1消息|   22/10/2015:12:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-002 |   这是测试2消息| 22/10/2015:13:00:20 | abc.dev.abc.com |   def.dev.abc.com CHAT-003 |这是测试3消息|   22/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com CHAT-004 |   这是测试4消息| 22/10/2015:14:10:20 | def.dev.abc.com |   abc.dev.abc.com

     

部门名称: 2015年10月23日    CHAT-005 |这是测试5消息| 23/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com    CHAT-006 |这是测试6消息| 23/10/2015:13:05:20 | abc.dev.abc.com | def.dev.abc.com

     

部门名称: 24/10/2015    CHAT-007 |这是测试7消息| 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com    CHAT-008 |这是测试8消息| 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com

任何快速帮助,所以我可以使用NSFetchResultsController并使用performFetchLimit实现Load More选项,非常感谢批量大小。

1 个答案:

答案 0 :(得分:0)

我使用transient属性修复了这个问题并且使用了魅力,为Coredata瞬态使用做了一些学习......非常感谢这个建议。