gpt4 book ai didi

ios - 如何修复分页中我的函数无法正常工作的 Swift

转载 作者:行者123 更新时间:2023-11-29 05:38:38 24 4
gpt4 key购买 nike

我在我的应用程序中使用分页,数据来自服务器。当我使用调用函数并重新加载 tableView 时,它不会在我的 tableview 中显示任何更改。

显示数据时,不使用分页,效果很好。但是分页时,会出现很多错误。

ViewDidLoad

override func viewDidLoad() {
super.viewDidLoad()
currentUserImage()
activityShown()
refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self, action: #selector(refresh(sender:)), for: UIControl.Event.valueChanged)
tableView.addSubview(refreshControl)

}

刷新

@objc func refresh(sender: AnyObject) {
activityArray.removeAll()
tableView.reloadData()
activityShown()
refreshControl.endRefreshing()
}

分页

  func activityShown() {
current_page = current_page + 1
let headers = ["Authorization":"Bearer \(UserDefaults.standard.string(forKey: "token")!)"]
//---------------------- Alamofire for User Profile ---------------------//
let parameters: Parameters = [
"per_page": per_page,
"page": current_page
]
Alamofire.request(Constants.activitiesURL,method: .get, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { response in
if response.result.isSuccess {
let ActivityJSON : JSON = JSON(response.result.value!)
let activityData = ActivityJSON["data"].arrayValue
for value in activityData {
let activity = Activity()
activity.name = value["name"].stringValue
activity.content = value["content"].stringValue
activity.published = value["published"].stringValue
activity.thumbnail = value["users"]["photo_thumb"].stringValue
activity.likesCount = value["likes_count"].intValue
activity.liked = value["liked"].intValue
activity.heartCount = value["heart_count"].intValue
activity.hearted = value["hearted"].intValue
activity.commentsCount = value["comments_count"].intValue
activity.commented = value["commented"].intValue
activity.id = value["id"].intValue
activity.currentID = value["users"]["user_id"].intValue
print("Like \(activity.liked!)")
print("heart \(activity.hearted!)")
self.activityArray.append(activity)
}
self.Total_activities = ActivityJSON["meta"]["pagination"]["total"].intValue
self.pCount = ActivityJSON["meta"]["pagination"]["count"].intValue
self.per_page = ActivityJSON["meta"]["pagination"]["per_page"].intValue
self.current_page = ActivityJSON["meta"]["pagination"]["current_page"].intValue
self.total_pages = ActivityJSON["meta"]["pagination"]["total_pages"].intValue
// DispatchQueue.main.async {
self.tableView.reloadData()
self.refreshControl.endRefreshing()
// }
}
else {
print("Error \(String(describing: response.result.error))")
}
}
}

这是我的职责。因此,当我刷新 tableView 时,输出是这样的。它没有刷新tableView

最佳答案

我认为问题在于你注释掉了主线程代码。您需要在 DispatchQueue.main.async 中调用 reloadData() 方法。另外,问题可能是当您调用 endRefreshing 方法时,您会调用 refresh 方法,并且在该方法内部您将删除 activityArray 内的所有元素。

关于ios - 如何修复分页中我的函数无法正常工作的 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56789205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com