gpt4 book ai didi

ios - Swift - 来自 Parse 的表重复记录

转载 作者:行者123 更新时间:2023-11-30 13:45:22 24 4
gpt4 key购买 nike

我有一个表,基本上加载来自后端的数据,即解析。现在,在单击单元格并在其他 View Controller (详细 Controller )上成功处理逻辑后,我有一个自动执行的展开转场。这个放松的延续带我们回到同一张 table 。除非我回去时,单元格中显示的相同结果显示两次(重复)。如果我重复上述过程 3 次,我会看到每条记录重复 3 次,依此类推。

我在其他帖子中读到更好地清除数组,我这样做了,但它似乎不起作用。或者可能是我把它清除在错误的地方。

这是 viewWillAppear 的代码:

 override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)

SwiftAddressBook.requestAccessWithCompletion({ (success, error) -> Void in
if success {
if let people = swiftAddressBook?.allPeople {
let arrayOfArrays = people.flatMap({$0.phoneNumbers?.map( {$0.value})})
let finalArray = arrayOfArrays.flatMap({ $0 })
self.numbersArray = self.getCleanNumberArrayFromArrayInput(finalArray)
}

dispatch_async(dispatch_get_main_queue()) {
self.getUsersMatchingNumbers({ (result)->Void in
self.userMatchArray = []
self.userMatchArray = result
self.tableView.reloadData()
})
}
}
else {
//no success. Optionally evaluate error
print("Access Red")
}
})
}

这是 cellForRowAtIndex:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! ContactTableCell

let row = indexPath.row

if(self.userMatchArray.count > 0 )
{
cell.name.text = self.userMatchArray[row]["name"] as? String
}else{
cell.name.text = "You have no friends yet"
}


return cell
}

任何解决此问题的帮助将不胜感激。提前致谢。

最佳答案

发生这种情况是因为代码位于 viewDidAppear 方法中。每次用户返回到该 VC 时,查询都会重复发生。

不要将其放在viewDidAppear中。

添加到 @Devster101 的评论中,您应该创建一个 fetchData 函数或 UIRefreshControl 来处理事件(或类似的东西)。

您可以创建一个刷新函数,如下所示:

 var refresher: UIRefreshControl!


func refresh() {


//do your query here

}

然后在viewDidLoad

override func viewDidLoad() {
super.viewDidLoad()

refresher = UIRefreshControl()

refresher.attributedTitle = NSAttributedString(string: "Pull to refresh")

refresher.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)

self.tableView.addSubview(refresher)

refresh()

}

这样,您就可以将权力授予用户。

Does dispatch_async(dispatch_get_main_queue(), ^{...}); wait until done?这个问题和答案也是一个很好的引用。

关于ios - Swift - 来自 Parse 的表重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011964/

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