gpt4 book ai didi

swift - 如何在字典中搜索某个值然后删除包含该值的记录?

转载 作者:行者123 更新时间:2023-11-30 10:46:23 24 4
gpt4 key购买 nike

在我当前编写的程序中,我有一个名为 Model 的对象,它具有多个属性。这些属性之一是名为 model_UUID 的 UUID。我将所有模型存储在名为 Models 的字典中,并且能够将它们显示在 tableView 的单个部分中,没有任何问题。

然后我想根据模型的另一个属性(即 codexName)将显示内容分类为多个部分。我可以通过使用以下代码将原始字典排序到第二个二维字典来做到这一点

var presortedModels = models
var sortedModels: [SortedModel] = []
while !presortedModels.isEmpty {
guard let referenceModel = presortedModels.first else {
print("all models are sorted.")
return []
}

let filteredModels = presortedModels.filter { (model) ->
Bool in
return model.codexName == referenceModel.codexName
}

presortedModels.removeAll { (model) -> Bool in
return model.codexName == referenceModel.codexName
}
let append = SortedModel(codexName:
referenceModel.codexName, models: filteredModels)
sortedModels.append(append)
}

return sortedModels.sorted {$0.codexName < $1.codexName}

这也可以正常工作。

现在我想从表中删除选定的模型,这就是我遇到问题的地方。我原以为,由于 UUID 对于每个模型都是唯一的,无论它在 tableView 中的哪个部分,我都可以在原始数组中查找 UUID 并将其删除。删除后,我可以再次调用排序函数并使用新的排序模型来填充我的 tableView。我遇到的问题是,只有模型位于 TableView 的第 0 部分时,模型才会被删除。如果未找到 UUID,尝试删除任何其他模型将会删除该文本。这是我当前使用的代码

if editingStyle == .delete {


// Delete Model from models
let removeUUID =
sortedModels[indexPath.section].models[indexPath.row].model_uuid

if
(self.models[indexPath.row].model_uuid.contains(removeUUID)) {
//print("model removed from model array")
self.models.remove(at: indexPath.row)
} else {
print("UUID not found within models")
}
// Delete Model from SortedModels
sortedModels[indexPath.section].models.remove(at:
indexPath.row)

// Delete the row from the data source
tableView.deleteRows(at: [indexPath], with: .fade)

// check to see if the section is empty, if it is delete
the section
if sortedModels[indexPath.section].models.count == 0 {
print("this section is scheduled for demolition")

}
// Save Changes
saveModels()
sortedModels = sortModels()

tableView.reloadData()

TLDR:如何在字典中搜索特定值,如果找到,则删除它所在的记录。

最佳答案

我认为这可以帮助您,这是一种通用方法,但您可以根据您的情况进行调整。

var posts: [[String:String]] = [
["a": "1", "b": "2"],
["x": "3", "y": "4"],
["a": "5", "y": "6"]]

for (index, var post) in posts.enumerate() {
post.removeValueForKey("a")
posts[index] = post }

/* This will posts = [
["b": "2"],
["y": "4", "x": "3"],
["y": "6"]]*/

关于swift - 如何在字典中搜索某个值然后删除包含该值的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55693135/

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