我正在构建一个使用事件源模式的iOS应用程序;我们的想法是,您应该能够通过重播一系列事件随时重建应用程序状态。
每个活动都带有一个UUID。应用程序的状态存储在持久的Core Data对象图中。
我对事件采购的特定实施保证了“至少一次”向客户提供事件。如果事件多次发生,我需要确保这些后续交付不会影响对象图。
我想保留一个事件记录 - 一组已经处理过的事件UUID。这样,我可以根据事件记录检查传入的事件,如果它们已经被处理,则删除它们。
您在哪里存储活动记录?
需要与持久化的核心数据图“同步”。特别是这意味着:
答案 0 :(得分:1)
您也无法将其存储在Core Data中。就个人而言,如果我已经使用Core Data存储数据,那么我会用它来存储所有数据,这样我就可以使用一个持久性接口,而不是尝试对齐多个不同的接口。
我知道你在哪里拿它。因此,您建议我使用fetchRequest来检查商店中是否存在具有该UUID的实体,而不是将containsObject发送到内存中的一组UUID?由于必须对每个进入的事件执行此检查,我该怎么做才能确保它具有高效性?
进行计数而不是获取。如果计数>> = 1,那么您已经拥有该事件。如果它为零,你就不会。对持久存储执行计数非常快。
其次,使用预先创建的NSFetchRequest(和NSPredicate)并在检查之间保持它。这将减少构建查询所需的时间。