Так что, если contact.name и contact.number оба являются строками, легко удалить дубликаты.Вам просто нужно вызвать это:
let noDuplicatesNameArray = Array(Set(exampleNameArray))
Я предполагаю, что contact.image - это UIImage.Это немного сложнее.Лучшим, самым чистым решением было бы сохранить имена UIImages в строковом массиве и проверить их на наличие дубликатов, а затем создать из них новый массив изображений.
Если вы не можете сделать это по какой-то причине, яразработал решение для вас, где вы можете проверить массив UIImages для дубликатов.Обратите внимание, что я только что разработал этот код.Некоторые люди могут найти это бесхитростным.Если вы тоже находите это несложным, пожалуйста, ищите SO для более оптимальных ответов.
Таким образом, у вас есть массив UIImages:
var imagesArray = [UIImage(named: "image1"), UIImage(named: "image1"), UIImage(named: "image1"), UIImage(named: "image2")]
Вы создаете новый массив, в котором вы сохраняете неповторяющиесяimages:
var newImagesArray = [UIImage]()
Эта функция очищает массив от дубликатов:
func clearDuplicates() {
var set = Set<Data>()
for image in imagesArray {
let data = image?.pngData()
set.insert(data!)
}
let noDuplicateArray = Array(set)
for imgData in noDuplicateArray {
let image = UIImage(data: imgData)
newImagesArray.append(image!)
}
print("You have an array of UIImages with no duplicates!")
}
Теперь newImagesArray - это imagesArray, но без дубликатов.Дайте мне знать, если это поможет!
Для получения дополнительной информации об удалении дубликатов из массивов см. этот SO ответ.