数据模型设计

时间:2012-09-13 17:23:08

标签: iphone objective-c ios uitableview data-modeling

我有点无法为我的iOS应用程序设计数据模型。我使用Parse作为我的后端服务,它有两个数据类:SongsRatings(用户评分)。当我的应用程序启动时,我正在为Parse做5个单独的查询,为我的UITableView组成5个可能的数据源:

  1. mainQuery - 每日上传的歌曲
  2. topTracksOfTheWeek - 本周最受好评的歌曲
  3. topTracksOfTheMonth
  4. topTracksAllTime
  5. userRatedTracks - 用户评分的歌曲
  6. Parse可以轻松地向查询添加约束以返回所需的数据。但是,我还需要将userRatedTracks与其他每个查询进行比较,并将userRating嵌入到每个数据源中(如果每个数据源都存在)。 (我在这里学会了如何有效地做到:Efficient looping in objective-c

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

    最简单的方法是在我需要时懒洋洋地加载每个查询,但我担心这会阻碍应用程序的响应性,而不是最初加载所有数据。

    你可能会说,我是初学者。我发现设计模式作为一个初学者非常令人沮丧,因为我一直认为有一种更好的方法来构建代码而不是我正在做的方式。有没有人对有多个数据源的设计有任何建议?

1 个答案:

答案 0 :(得分:0)

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

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