Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Swift替换字典中的特定键值_Ios_Swift - Fatal编程技术网

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

Ios 如何使用Swift替换字典中的特定键值,ios,swift,Ios,Swift,我正在实现按钮单击以添加CollectionView单元格,就像标签UI一样。在这里,我创建了一个TagModel类,用于维护TagId,并通过使用if items.contains(tag)==false{….}(它将避免复制到集合视图中)来验证标记数据是否可用。现在,我需要在其中添加一个验证,如果items.contains(tag)==true,则需要检查标记名和当前选择的值是否相同。如果不相同,我需要替换该标记值。如何做到这一点 标签验证代码 func tagValidation(){

我正在实现按钮单击以添加CollectionView单元格,就像标签UI一样。在这里,我创建了一个TagModel类,用于维护TagId,并通过使用
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()
函数需要检查已存在值是否相同,则只需添加一个标记。如果相同,则不需要替换索引值,否则需要在不添加新标记的情况下替换值。对不起,我不明白,如果您编辑问题以澄清,而不是试图在注释中解释逻辑,可能会更好。回答太棒了!