【发布时间】:2015-02-07 12:57:51
【问题描述】:
我正在使用 Core-Data 存储来自联系人的消息
我创建了一个“联系人”表和一个“消息”表。
- 每条消息都与联系人是一对一的关系
- 每个联系人与每个联系人的消息都是一对多的关系
现在,为了显示消息,我使用一个简单的 fetchedResultsController 并将联系人作为谓词。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"contact = %@", self.contact];
一旦消息的数量开始产生结果,加载需要一些时间,因为我无法从它们的关系中索引消息。
我知道我可以访问关系中的所有联系人消息,但我还需要类似于
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
为了在有新消息显示时立即更新视图...
我想我的问题是:
- 从联系人一对多的关系中访问消息会比 fetchedResultsController 在消息数为结果的情况下更快吗?
- 我可以用这个从最新到最旧的消息排序吗?
- 我可以在没有 fetchedResultController 的情况下跟踪联系人消息中的任何更改吗? (可以更改/添加/删除消息)
- 或者有没有办法用关系索引消息表?
对于 3. 我知道我可以收听任何 NSManagedObjectContextObjectsDidChangeNotification,但问题是我不在乎另一个联系人是否在我在另一个联系人上发送消息...我还没有找到为此模型使用 KVO 的聪明方法。
【问题讨论】: