Swift Array содержит функцию, увеличивающую время сборки

Я не уверен, принадлежит ли это к переполнению стека, если это не так, дайте мне знать.

У меня есть этот кусок кода, который добавляет контакты в массив, если контакт с этой комбинацией телефон / имя уже существует в массиве, он не добавляет его снова (то есть без дубликатов).

Он работает как задумано, но значительно увеличивает время сборки, и я ищу лучший способ использованияcontains или какой-то другой подход.

var contacts = [CNContact]()

let name: String = contact.givenName + " " + contact.middleName + " " + contact.familyName

if (name.stringByReplacingOccurrencesOfString(" ", withString: "")).length > 1
{
    if contact.phoneNumbers.count > 0 
    {
        // Check if contacts already contains name/phone combination
        if let phoneNumber: String = (contact.phoneNumbers[0].value as? CNPhoneNumber)?.stringValue
        {
            if contacts.contains({$0.phoneNumbers.count > 0 && ($0.phoneNumbers[0].value as? CNPhoneNumber)?.stringValue == phoneNumber}) &&
                 contacts.contains({($0.givenName + " " + $0.middleName + " " + $0.familyName) == name})
            { /* Contact with same name/phone combination already exists in array */ }
            else { contacts.append(contact) }
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос