我有一个在 tableView 中呈现内容的 iOS 应用程序。我添加了一个与我的数据库交互的“喜欢/不喜欢”功能(我使用 Parse.com)。每次有人喜欢/不喜欢某个内容时,都会将详细信息发送到 Parse 数据库。对于每条内容,我想计算并显示“喜欢”与“喜欢”+“不喜欢”的百分比。这是一个非常简单的数学运算,但我无法理解设计数据库表的最佳方法以及在 tableView 实际出现之前计算每条内容的“喜欢”百分比的最有效方法。
实际上,我的 tableView 中已经有一个循环,viewDidLoad
它将另一个数据库表中的内容与“喜欢/不喜欢”表进行比较,以恢复用户的“喜欢/不喜欢”按钮状态(如果他们已经喜欢/不喜欢一块内容)。
起初,我想在初始viewDidLoad
循环中创建一个数组。但是,使用whereKey: equalTo:
每个片段内容的查询类型来简单地查找喜欢/不喜欢的数量需要很长时间。正如预测的那样,它也非常缓慢cellForRowAtIndexPath
。
最坏的情况是,我可以在服务器端进行这些计算,然后只提取“喜欢”的百分比。但是,我想以某种方式在应用程序中实现这一点。我是一个完整的初学者,所以我可能会做错这一切。
这是我的数据库表的基础:
编辑:我设法构建了一个服务器端程序,用于计算“喜欢”内容的用户百分比。我的应用程序在运行时从数据库中提取这个百分比。当用户“喜欢”某物时,为了使百分比变化更具响应性,我在本地计算了一个更新的百分比。这里的问题是当用户退出应用程序并重新打开时,数据会重新加载。如果服务器端程序最近没有运行,应用程序将显示旧的“喜欢”百分比(尚未计算最新的百分比)。我看到解决此问题的两个解决方案是:
- 每 1-3 分钟运行一次服务器端程序
- 当有人喜欢内容时向数据库发布更多数据(这将涉及对每个“喜欢”的额外数据库查询)。
我认为这两种选择对于我想要完成的事情来说都太昂贵了。