如何基于Swift中元素的ID从结构数组中删除结构元素?

use*_*930 1 nsarray ios swift

我的Swift应用程序中有一个结构:

open class Cluster : NSObject {

    open var username: String? = ""
    open var id: String? = ""
    open var deleted: Bool? = false

}
Run Code Online (Sandbox Code Playgroud)

现在,我遍历此数组,并向其中添加新元素,但前提是这些元素尚不存在:

if(!self.array.contains(where: {$0.id==temp.id}))
     {
        self.array.append(temp);
     }
Run Code Online (Sandbox Code Playgroud)

我想对这段代码进行调整,以便它不仅添加不存在的新元素,而且还删除了同时将其标志deleted更改为true 的那些元素。

我开始编写以下代码:

if(!self.array.contains(where: {$0.id==temp.id}))
    {
        self.array.append(temp);
    } else {
        if(temp.deleted == true){
            self.array.remove //how can I remove here this specific element?
    }
}
Run Code Online (Sandbox Code Playgroud)

Kri*_*aCA 5

要从数组中删除特定元素,应该首先获取该元素的索引,然后删除,如下所示:

if let index:Int = self.array.index(where: {$0.id == temp.id && $0.deleted == true}) {
    self.array.remove(at: index)
}
Run Code Online (Sandbox Code Playgroud)