gpt4 book ai didi

ios - 编辑模式是在我使用表格顺序后删除错误的单元格

转载 作者:行者123 更新时间:2023-11-28 16:13:17 26 4
gpt4 key购买 nike

我有一个表格 View ,其中按从旧到新的顺序列出了大约 10 个单元格。当我打开“编辑模式”并删除单元格时,一切似乎都正常工作。

但我已经创建了一些函数,可以根据各种属性将这些单元格分为不同的顺序。当我在这些不同的排序顺序中使用编辑模式时,似乎删除了错误的单元格。

这是我的一个排序函数的代码。

func sortPokemonListbyAveIV(){
self.pokemonList.sortUsingComparator{
(obj1: AnyObject, obj2: AnyObject) -> NSComparisonResult in
let first = obj1 as! NSDictionary
let second = obj2 as! NSDictionary
var firstIVRange = ""
var secondIVRange = ""
if((first["iv"] as! String).containsString("Sorry")){
firstIVRange = "IV: 1 - 2%"
} else {
firstIVRange = (first["iv"] as! String).stringByReplacingOccurrencesOfString("--", withString: "-")
}
if((second["iv"] as! String).containsString("Sorry")){
secondIVRange = "IV: 1 - 2%"
} else {
secondIVRange = (second["iv"] as! String).stringByReplacingOccurrencesOfString("--", withString: "-")
}
// let firstIVRange = first["iv"] as! String
// let secondIVRange = second["iv"] as! String
let firstAveIV = self.avgIV(firstIVRange)
// print(firstIVRange)
let secondAveIV = self.avgIV(secondIVRange)
let result = firstAveIV - secondAveIV
return (result < 0) ? .OrderedDescending
: (result == 0) ? .OrderedSame : .OrderedAscending
}
}

这是我的删除功能的代码。

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
let data = self.pokemonList[indexPath.row]
self.pokemonList.removeObject(data)

self.images.removeObjectForKey(data["imageId"] as! String)
let idToRemove = self.ids[indexPath.row]

let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext
if( objects[data["imageId"] as! String] != nil)
{
context.deleteObject(objects[data["imageId"] as! String]!)

}
do {
try context.save()
} catch _ {
}

self.ids.removeObject(idToRemove)
let ref = FIRDatabase.database().reference()
let userId = FIRAuth.auth()!.currentUser!.uid
let key = ref.child("users")
let b = key.child("\(userId)")
let c = b.child("scan")
let d = c.child(idToRemove as! String)
d.removeValue();

tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
tableView.reloadData()
}
}

我怀疑我需要编辑删除函数代码以考虑到 TableView 中当前事件的排序顺序。不过,我不太确定该怎么做。

最佳答案

您不需要在 tableView.deleteRowsAtIndexPaths 之后调用 tableView.reloadData()。由于调用 reloadData 将触发一大堆 tableView 委托(delegate)和数据源方法,如 cellForRowAtIndexPathnumberOfRowsInSection 等。

关于ios - 编辑模式是在我使用表格顺序后删除错误的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339269/

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