从网络获取和显示数据
1. 实现获取逻辑
网络请求的异步特性使得某些任务变得相当复杂。通常编写代码时,其执行是可预测的,应用程序逐行运行,后续代码可以假定前面的代码已执行完毕。但异步代码不同,它会从主线程分离出来,与其他代码并行运行。例如网络请求,异步代码可能在发起请求的函数执行数秒后才执行。
这意味着需要找到一种方法,在获取评分后立即更新和保存新添加的电影信息。实现此功能的代码看起来可能很自然,但实际上并非那么简单。同时,要注意相关代码会在多个线程上执行,网络请求的回调和发起请求的代码不在同一线程。而 Core Data 不是线程安全的,不能在创建 Core Data 对象的线程之外的线程安全地访问它。
接下来开始实现获取电影流行度评分的网络请求,将获取逻辑抽象到一个名为 MovieDBHelper 的辅助类中。操作步骤如下:
1. 在 Xcode 中创建一个新的辅助文件夹。
2. 向该文件夹中添加一个名为 MovieDBHelper.swift 的新 Swift 文件。
将逻辑抽象到辅助类有多个优点:
- 简单性:使视图控制器代码简洁干净。
- 灵活性:便于组合多个评分网站、不同的 API,或根据家庭成员添加同一电影的数量计算流行度。
在 MovieDBHelper 文件中添加以下骨架实现:
struct MovieDBHelper {
typealias MovieDBCallback = (Double?) -> V
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



