0

我在为我的 iOS 应用程序设计数据模型时有点卡住了。我使用Parse作为我的后端服务,它有两个数据类:SongsRatings(用户评分)。当我的应用程序启动时,我目前正在对 Parse 进行 5 个单独的查询,这些查询构成了我的 UITableView 的 5 个可能的数据源:

  1. mainQuery - 每日上传的歌曲
  2. topTracksOfTheWeek - 本周评分最高的歌曲
  3. 本月热门曲目
  4. topTracksAllTime
  5. userRatedTracks - 用户评分的歌曲

Parse 可以很容易地向查询添加约束以返回所需的数据。但是,我还需要与userRatedTracks其他每个查询进行比较,并将其嵌入userRating到每个数据源中(如果每个轨道都存在)。(我在这里学会了如何有效地做到这一点:Objective-c 中的高效循环

我无法弄清楚如何优化或更改此设计以获得更好的性能。所有上述查询都在一个被调用的方法getDataSource中调用viewDidLoad,然后一个方法assignDataSource根据用户选择的数据源(mainQuery默认)设置表的数据源数组。理想情况下,应用程序启动mainQuery时在主线程中获取,填充表,而其他查询在后台线程中获取。但是,如果用户选择查看topTracksOfTheWeek. 何时getDataSource调用并且topTracksOfTheWeek查询没有优先级。

最简单的方法是在需要时延迟加载每个查询,但我担心与最初加载所有数据相比,这会阻碍应用程序的响应能力。

您可能会说,我是初学者。作为初学者,我发现设计模式非常令人沮丧,因为我总是认为有比我正在做的更好的方式来构建代码。有人对多数据源的设计有什么建议吗?

4

1 回答 1

0

您是否将结果加载到核心数据中?您可以在后台 MOC 中加载/同步数据并保存到核心数据。当用户启动时,它会拉取本地结果,直到刷新新的解析结果并显示一个指示符,以便用户知道数据正在刷新。查看 Ray Wenderlichs 教程,它几乎完全符合您执行此操作所需的内容。甚至使用 Parse

http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1

于 2012-09-13T17:28:21.127 回答