Если вам не важен порядок, вы можете просто поместить все элементы в Set и преобразовать обратно в массив.
Для этого ваш тип должен соответствовать Hashable
.
Если все свойства вашего типа Hashable
, то вы можете просто добавить : Hashable
, и компилятор позаботится об остальном.
struct tagging: Hashable {
private(set) public var tags : String
public var selected : Bool
init(tags : String, selected : Bool) {
self.tags = tags
self.selected = selected
}
}
tagsarray = Array(Set(tagsarray))
Но если вам нужно сохранить порядок предметов, вам нужно отфильтровать руками. Для этого вам понадобится Equatable
. Он работает так же, как Hashable
, компилятор будет обрабатывать реализацию для вас.
struct tagging: Equatable {
private(set) public var tags : String
public var selected : Bool
init(tags : String, selected : Bool) {
self.tags = tags
self.selected = selected
}
}
tagsarray = tagsarray.reduce(into: []) { uniqs, tag in
guard !uniqs.contains(tag) else { return }
uniqs.append(tag)
}