I am creating a chat application UI like whats app where I need to sort the chat messages and section them based on NSDate (DD/MM/YY).
Each distinct (DD/MM/YY) section names will have items sorted again on the timestamp containing this date.
How can I achieve this in NSFetchResultsController. I was successful achieving this using Distinct Query to get all the Chat Objects dates that match the DD/MM/YYYY and find section names.
Then again make a query to DB to find all chats matching the chat objects timestamp for the date portion but time as different for each.
But this consumes heavy UI / Backend operation on core data. Is there any optimal way to achieve this.
Example:
Chat Object in DB Chat ID | Message Text | Timestamp | Sender Id | Receiver Id
Data Example CHAT-001 | This is test 1 message | 22/10/2015:12:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-002 | This is test 2 message | 22/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-003 | This is test 3 message | 22/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com CHAT-004 | This is test 4 message | 22/10/2015:14:10:20 | def.dev.abc.com | abc.dev.abc.com CHAT-005 | This is test 5 message | 23/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-006 | This is test 6 message | 23/10/2015:13:05:20 | abc.dev.abc.com | def.dev.abc.com CHAT-007 | This is test 7 message | 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com CHAT-008 | This is test 8 message | 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com
Output Expected
Section name : 22/10/2015 CHAT-001 | This is test 1 message | 22/10/2015:12:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-002 | This is test 2 message | 22/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-003 | This is test 3 message | 22/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com CHAT-004 | This is test 4 message | 22/10/2015:14:10:20 | def.dev.abc.com | abc.dev.abc.com
Section name : 23/10/2015 CHAT-005 | This is test 5 message | 23/10/2015:13:00:20 | abc.dev.abc.com | def.dev.abc.com CHAT-006 | This is test 6 message | 23/10/2015:13:05:20 | abc.dev.abc.com | def.dev.abc.com
Section name : 24/10/2015 CHAT-007 | This is test 7 message | 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com CHAT-008 | This is test 8 message | 24/10/2015:13:10:20 | def.dev.abc.com | abc.dev.abc.com
Any quick help so I can use NSFetchResultsController and also achieve Load More option using performFetchLimit and batch size is really appreciated.
I fixed that and working like charm using the transient attribute, did bit of learning for Coredata transient usage... Thanks a ton for this advices.