Ios 如何使用Swift替换字典中的特定键值
我正在实现按钮单击以添加CollectionView单元格,就像标签UI一样。在这里,我创建了一个TagModel类,用于维护TagId,并通过使用Ios 如何使用Swift替换字典中的特定键值,ios,swift,Ios,Swift,我正在实现按钮单击以添加CollectionView单元格,就像标签UI一样。在这里,我创建了一个TagModel类,用于维护TagId,并通过使用if items.contains(tag)==false{….}(它将避免复制到集合视图中)来验证标记数据是否可用。现在,我需要在其中添加一个验证,如果items.contains(tag)==true,则需要检查标记名和当前选择的值是否相同。如果不相同,我需要替换该标记值。如何做到这一点 标签验证代码 func tagValidation(){
if items.contains(tag)==false{….}
(它将避免复制到集合视图中)来验证标记数据是否可用。现在,我需要在其中添加一个验证,如果items.contains(tag)==true,则需要检查标记名和当前选择的值是否相同。如果不相同,我需要替换该标记值。如何做到这一点
标签验证代码
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)
}
等式运算符有点不正确:您询问的是两个项目是否相同,如果相同,则检查其中是否有不同之处:)
尝试使用first方法搜索数组:如果您找到(并且您将找到)与案例匹配的任何项目,请继续您的工作
大概是这样的:
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
}
}
我不清楚你在问什么,你说的是字典,但在你的代码中你使用了数组?“当前选定值”是什么意思?@JoakimDanielson如果items.contains(tag)==false | | | items.first(其中:{$0.tagName==tag.tagName})==nil{items.append(tag)}
在这里,我需要避免重复添加。如果下次调用tagValidation()
函数需要检查已存在值是否相同,则只需添加一个标记。如果相同,则不需要替换索引值,否则需要在不添加新标记的情况下替换值。对不起,我不明白,如果您编辑问题以澄清,而不是试图在注释中解释逻辑,可能会更好。回答太棒了!