我正在实现按钮单击,以像Tag UI一样添加CollectionView Cell。在这里,我创建了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)
}
}
}
第一个ViewController
@IBAction func saveAction(_ sender: Any) {
let tag = TagModel(tagId: 0, tagName: "test", tagStoreKey: "a")
tag.save()
self.dismiss(animated: true, completion: nil)
}
答案 0 :(得分:1)
相等运算符不对劲:您要问两个项目是否相同-如果它们相同,请检查其中是否有所不同:)
尝试使用 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
}
}