我有一个表,基本上加载来自后端的数据,即解析。现在,在单击单元格并在其他 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/