如何使用 Swift 替换字典特定的键值



我正在实现按钮单击以添加CollectionView单元格,就像标签UI一样。在这里,我创建了 TagModel 类,用于维护 TagId 并使用if items.contains(tag) == false {….}验证每次标记数据是否可用(它将避免复制到集合视图中(。现在,我需要再添加一个验证,if items.contains(tag) == true需要检查 tagName 和当前选定的值是否相同。如果不一样,我需要替换该标签值。如何实现这一点?

标签验证码

func tagValidation(){
// Validate A
if let aValue = UserDefaults.standard.object(forKey: "a") as? [String:Any] {
let tag = TagModel(dict: aValue)
if items.contains(tag) == false { // how to check if true need to validate current value and already exists values are same. if same no need to replace or else need to replace value
items.append(tag)
}
}
}

第一个视图控制器

@IBAction func saveAction(_ sender: Any) {
let tag = TagModel(tagId: 0, tagName: "test", tagStoreKey: "a")
tag.save()
self.dismiss(animated: true, completion: nil)
}

你的相等运算符有些不对劲:你问两个项目是否相同 - 如果它们相同,请检查它们中的某些内容是否不同:)

尝试使用第一种方法搜索数组:如果您找到(并且您将(与大小写匹配的任何项目,请继续您的工作。

像这样:

if let aValue = UserDefaults.standard.object(forKey: "a") as? [String:Any] {
let tag = TagModel(dict: aValue)
if items.contains(tag) == false { 
items.append(tag)
} else if let existing = items.first(where: { $0 == tag}), existing.tagName != tag.tagName {
// replace item
let index = items.firstIndex(of: tag)!
items[index] = tag
}
}

最新更新