初学者数据库麻烦

时间:2012-06-07 23:33:10

标签: iphone objective-c ios database

我有一个iOS应用程序,它在tableView中显示内容。我添加了一个与我的数据库交互的“喜欢/不喜欢”功能(我使用Parse.com)。每当有人喜欢/不喜欢一段内容时,细节就会被发送到Parse数据库。对于每个内容,我想计算并显示“喜欢”与“喜欢”+“不喜欢”的百分比。这是非常简单的数学运算,但我无法围绕设计数据库表的最佳方式,以及在tableView物理出现之前计算每段内容的“喜欢”百分比的最有效方法。

实际上,我已经在tableView的viewDidLoad中有一个循环,它将来自另一个数据库表的内容与'like / dislike'表进行比较,以恢复用户的'喜欢/不喜欢'按钮状态(如果他们已经喜欢/不喜欢一段内容)。

首先,我想到了在初始viewDidLoad循环中创建一个数组。但是,对每个内容使用whereKey: equalTo:类型的查询来简单地找到喜欢/不喜欢的数量需要永远。正如预测的那样,cellForRowAtIndexPath也很慢。

最糟糕的情况是,我可以在服务器端进行这些计算,只需拉出'喜欢'的百分比。但是,我想以某种方式在应用程序中实现它。我是一个完全的初学者,所以我可能会认为这一切都是错的。

以下是我的数据库表的基础: enter image description here

编辑:我设法构建了一个服务器端程序,用于计算“喜欢”内容的用户百分比。我的应用程序在运行时从数据库中提取此百分比。为了在用户“喜欢”某事时使百分比变化更具响应性,我在本地计算更新的百分比。这里的问题是当用户退出应用程序并重新打开时,数据会重新加载。如果服务器端程序最近没有运行,则应用程序将显示旧的“喜欢”百分比(最新的%将不会被计算)。我认为解决这个问题的两个解决方案是:

  1. 每1-3分钟运行一次服务器端程序
  2. 当有人喜欢内容时,会向数据库发布更多数据(这会涉及每个'喜欢'的额外数据库查询)。
  3. 我认为这些选项对于我想要完成的事情来说太昂贵了。

1 个答案:

答案 0 :(得分:0)

我建议将计算结果留给服务器端,并使用应用程序中的信息进行响应。这将使您免于处理和解析传入的结果。

您在服务器上的处理能力高于在设备上的处理能力。