我在为我的 iOS 应用程序设计数据模型时有点卡住了。我使用Parse作为我的后端服务,它有两个数据类:Songs
和Ratings
(用户评分)。当我的应用程序启动时,我目前正在对 Parse 进行 5 个单独的查询,这些查询构成了我的 UITableView 的 5 个可能的数据源:
- mainQuery - 每日上传的歌曲
- topTracksOfTheWeek - 本周评分最高的歌曲
- 本月热门曲目
- topTracksAllTime
- userRatedTracks - 用户评分的歌曲
Parse 可以很容易地向查询添加约束以返回所需的数据。但是,我还需要与userRatedTracks
其他每个查询进行比较,并将其嵌入userRating
到每个数据源中(如果每个轨道都存在)。(我在这里学会了如何有效地做到这一点:Objective-c 中的高效循环
我无法弄清楚如何优化或更改此设计以获得更好的性能。所有上述查询都在一个被调用的方法getDataSource
中调用viewDidLoad
,然后一个方法assignDataSource
根据用户选择的数据源(mainQuery
默认)设置表的数据源数组。理想情况下,应用程序启动mainQuery
时在主线程中获取,填充表,而其他查询在后台线程中获取。但是,如果用户选择查看topTracksOfTheWeek
. 何时getDataSource
调用并且topTracksOfTheWeek
查询没有优先级。
最简单的方法是在需要时延迟加载每个查询,但我担心与最初加载所有数据相比,这会阻碍应用程序的响应能力。
您可能会说,我是初学者。作为初学者,我发现设计模式非常令人沮丧,因为我总是认为有比我正在做的更好的方式来构建代码。有人对多数据源的设计有什么建议吗?