Estou tentando criar um objeto se ele não existir em uma matriz e excluir um se estiver duplicado. O código a seguir pode determinar com êxito se um objeto já existe e se está duplicado. O que não tenho certeza é como capturar o objeto real dentro da instrução IF if existanceCount == 2{}
dentro do contains(where:)
método para poder excluir um dos objetos duplicados.
Como posso capturar um objeto dentro do contains(where:)
método?
Basicamente preciso acessar {$0}
dentro do contains(where:)
método.
func dogCleanup(){
var existanceCount = 0
if dogs.contains(where: {$0.name == "Teddy"}){
existanceCount += 1
if existanceCount == 2{
print("Dog exists 2 times, delete it")
// how can I capture one of the duplicate objects
}
}else{
print("Does NOT exist, add dog...")
}
}
EDIT: Adicionado array de dogNames.
func dogCleanup(){
let dogNames = ["Teddy","Browny","Mia"]
var existanceCount = 0
for i in 0..<dogNames.count{
if dogs.contains(where: {$0.name == dogNames[i]}){
existanceCount += 1
if existanceCount == 2{
print("Dog exists 2 times, delete it")
// how can I capture one of the duplicate objects
}
}else{
print("Does NOT exist, add dog...")
}
}
}
EDITAR 2.
Aqui está no contexto o que estou esperando.
Exemplo 1
let dogs = [Dog(name: "Teddy"), Dog(name: "Browny"),Dog(name: "Mia")] // objects in Core Data
let dogNames = ["Teddy","Browny","Mia"] // default dog names
func dogCleanup(){
// do nothing, both match
}
// What I'm expecting after running the dogCleanup
Teddy,Browny,Mia
Exemplo 2
let dogs = [Dog(name: "Teddy"), Dog(name: "Browny")] // objects in Core Data
let dogNames = ["Teddy","Browny","Mia"]
func dogCleanup(){
// add Mia since it doesn't exist in Core Data
}
// What I'm expecting after running the dogCleanup
Teddy, Browny, Mia
Exemplo 3
let dogs = [Dog(name: "Teddy"), Dog(name: "Browny"), Dog(name: "Browny")] // objects in Core Data
let dogNames = ["Teddy","Browny","Mia"] // default dog names
func dogCleanup(){
// delete one Browny and add Mia since it doesn't exist in Core Data
}
// What I'm expecting after running the dogCleanup
Teddy, Browny, Mia
Exemplo 4
let dogs = [Dog(name: "Teddy"), Dog(name: "Browny"), Dog(name: "Browny"), Dog(name: "Shadow")] // objects in Core Data
let dogNames = ["Teddy","Browny","Mia"] // default dog names
func dogCleanup(){
// delete one Browny, add Mia and leave Shadow
}
// What I'm expecting after running the dogCleanup
Teddy, Browny, Mia, Shadow
Na verdade, se você chamar esse método sempre para escolher um cachorro pelo nome e criar um novo cachorro, caso ele não exista, você não precisará verificar mais de uma ocorrência do objeto.