我正在寻找一些帮助来理清我将如何处理Feed时间线中的差距的逻辑,就像你在各种Twitter客户端中看到的那样。但是,我不是在创建Twitter客户端,因此它不会特定于该API。我正在使用自己的API,因此我可以对API进行一些更改以适应这种情况。
我正在核心数据中保存每个Feed项。为了坚持下去,我想保留饲料项目。假设我从服务器上获取50个Feed项。下次用户启动应用时,我会请求最新的Feed项,并返回50个Feed项并进行提取以在表格视图中显示Feed项。
两个服务器请求之间可能已经过了足够的时间,两组Feed项之间存在时间差。
50 new feed items (request 2)
----- gap ------
50 older feed items (request 1)
* end of items in core data - just load more *
我通过比较request 2
中Feed项的最早时间戳与request 1
中Feed集的最新时间戳来跟踪是否存在差距。如果来自request 2
的最旧时间戳大于request 1
的最新时间戳,我可以假设存在间隙,我应该显示一个带有按钮的单元格,以便再加载50个。如果来自request 2
的最旧时间戳小于或等于request 1
的最新时间戳,则填补了差距,并且无需显示加载器。
我的第一个问题是围绕是否显示“加载更多”单元格的整个逻辑。我怎么知道在哪里显示这个差距?我是否将其作为与我的Feed项目相同的NSManagedObject entity
存储,并使用额外的bool +时间戳位于上述两者之间,然后相应地更改UI?这里会有另一种更好的解决方案吗?
我的第二个问题与多个差距有关:
50 new feed items
----- gap ------
174 older feed items
----- gap ------
53 older feed items
* end of items in core data - just load more *
我认为在这种情况下使用NSManagedObject entity
会有所帮助,所以我可以在我的核心数据中定期提取,如果它们出现在对象中,则将它们显示为加载单元格并相应地删除它们(如果在任何间隙之间不再存在间隙)。
我最终想要在经过一段时间之后擦除对象,因为用户可能不会及时返回那么长时间,如果他们这样做,我总是可以在需要时从我的服务器中获取它们。
非常感谢任何人对此主题的任何经验和建议!