ios - 如何预取 TableViewController 中的单元格?
问题描述
我阅读了 Prefetching 并添加了委托、数据源和所需的两个函数,现在,我需要在这两个中添加什么?这是用来实现 60 fps 平滑滚动的东西吗?
对不起,如果这是一个模糊的问题。
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.prefetchDataSource = self
let userJSONURLString = "https://qapital-ios-testtask.herokuapp.com/users"
let activitiesJSONURLString = "https://qapital-ios-testtask.herokuapp.com/activities?from=2016-05-23T00:00:00+00:00&to=2019-05-23T00:00:00+00:00"
guard let userURL = URL(string: userJSONURLString) else { return }
guard let activitiesURL = URL(string: activitiesJSONURLString) else { return }
URLSession.shared.dataTask(with: activitiesURL) { (data, response, err) in
guard let data = data else { return }
do {
// Activities
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
let result = try decoder.decode(Root.self, from: data)
self.activities = result.activities
URLSession.shared.dataTask(with: userURL) { (data, response, err) in
guard let data = data else { return }
do {
// Users
let usersJson = try JSONSerialization.jsonObject(with: data, options: [])
guard let jsonArray = usersJson as? [[String: Any]] else { return }
for dic in jsonArray {
guard let avatarUrl = dic["avatarUrl"] as? String else { return }
}
} catch {
print("Error serializing json: ", error)
}
}.resume()
} catch {
print("Error serializing json: ", error)
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}.resume()
}
func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {
print("prefetching row of \(indexPaths)")
}
func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) {
print("cancel prefetch row of \(indexPaths)")
}
}
解决方案
推荐阅读
- python - ValueError:检查输入时出错:预期 input_1 具有形状(无,65563)但得到的数组具有形状(374、65536)
- node.js - 是否可以使用 IAM 在 gcloud 上托管的应用程序内以谷歌用户身份进行身份验证?
- c - 使用 qsort() 对整数数组进行排序并交换字符串
- javascript - HTML 无法加载数组/未捕获(承诺)
- html - Flexbox 列表 8 个,有 2 行
- c# - How can I add to an existing array/ienumerable collection in a foreach loop
- php - Laravel 5.6 Redirect to Intended URL after Login not working
- c# - OpenFileDialog can't load CSV files but can load xls/xlsx Excel files
- c# - Error converting data type nvarchar to datetime in a Stored Procedure from code
- sql - 如何在 Oracle 数据库中匹配此数据