如何在swift 3分页期间在表格视图中显示所有数据?
Posted
技术标签:
【中文标题】如何在swift 3分页期间在表格视图中显示所有数据?【英文标题】:How to show all data in table view during pagination in swift 3? 【发布时间】:2017-10-07 11:40:59 【问题描述】:这里我已经为表格视图实现了分页,并且项目是通过使用模型类加载的,但是这里加载的项目正在替换为新项目,每当它调用 api 时,它都会返回新数据,旧数据会覆盖它并显示我第一次实施时一次只有 10 个项目,谁能帮我解决这个问题?
func listCategoryDownloadJsonWithURL(listUrl: String)
let url = URL(string: listUrl)!
print(listUrl)
let task = URLSession.shared.dataTask(with: url) (data, response, error) in
if error != nil print(error!); return
do
if let jsonObj = try JSONSerialization.jsonObject(with: data!) as? [String:Any]
self.listClassModel = ModelClass(dict: jsonObj as [String : AnyObject])
DispatchQueue.main.async
guard let obj = self.listClassModel else return
let itemsCount = obj.items.count
print(itemsCount)
for i in 0..<itemsCount
let customAttribute = obj.items[i].customAttribute
for j in 0..<customAttribute.count
if customAttribute[j].attributeCode == "image"
let baseUrl = "http://192.168.1.11/magento2/pub/media/catalog/product"
self.listCategoryImageArray.append(baseUrl + customAttribute[j].value)
print(self.listCategoryImageArray)
self.activityIndicator.stopAnimating()
self.activityIndicator.hidesWhenStopped = true
self.collectionView.delegate = self
self.collectionView.dataSource = self
self.collectionView.reloadData()
self.collectionView.isHidden = false
self.tableView.reloadData()
catch
print(error)
task.resume()
【问题讨论】:
【参考方案1】:每次调用 API 时,您都将结果数据分配给模型数组。这就是您的旧数据被新数据替换的原因。您应该将新数据附加到数据源数组中,而不是分配。
if let jsonObj = try JSONSerialization.jsonObject(with: data!) as? [String:Any]
self.listClassModel.append(contentsOf: ModelClass(dict: jsonObj as [String : AnyObject]))
还要确保先将数组初始化为空数组。 (可能在声明或 viewDidLoad 中)调用 API。
【讨论】:
我声明了一个空数组,如下所示,但它在提到的更改行 self.listClassModel.append(contentsOf: ModelClass(dict: jsonObj as [String : AnyObject])) 和错误是 [string:anyobject] 类型的值没有成员 append var listClassModel : [String: AnyObject] = [:] var listClassModel = [ModelClass]() 这就是数组的实例化方式。您在上面的代码中定义了一个字典。 但我也试过这样 var listClassModel = [[String:AnyObject]]() 但这里也显示错误,无法将“模型类”类型的值转换为预期的参数类型 [字符串:任何对象] 你为什么要定义你的字典类型数组?您应该将其定义为 ModelClass 的数组。 ModelClass 和字典是两种不同的类型。 如何声明告诉我兄弟我是 swift 3 的新手?以上是关于如何在swift 3分页期间在表格视图中显示所有数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据swift 3中的集合视图高度动态增加表格视图高度?
表格视图单元格中的滚动视图将无法正确显示图像,并且在 swift 4 中的分页模式下有一个额外的页面