Я хочу разрешить пользователю удалять элементы (например, CNPhoneNumber
, CNEmailAddresses
) из контакта после отображения исходного контакта и в зависимости от того, что они выбирают, я удаляю из своего отредактированного контакта.
Даже если у меня есть изменяемый контакт и я использую изменяемый массив из ключа в моем коде, возвращенный отредактированный контакт не удалит элемент.
Что я здесь не так делаю?
Вот моя универсальная функция (работает и работает нормально, за исключением перечисленных выше проблем)
private func removeFromEditedContact<T:NSString>(labeledValueType:T, with key:String,from contact:CNContact,to toContact:CNContact, at indexPath:IndexPath) -> CNContact {
let mutableContact = toContact.mutableCopy() as! CNMutableContact
//what detail are we seraching for in the contact
if let searchingArray = contact.mutableArrayValue(forKey: key) as? [CNLabeledValue<T>] {
let searchValue = searchingArray[indexPath.row].value
//if detail is present in our mutable contact remove it
var labeledValueToChange = mutableContact.mutableArrayValue(forKey: key) as? [CNLabeledValue<T>]
if let index = labeledValueToChange?.index(where: {$0.value == searchValue}) {
labeledValueToChange?.remove(at: index)
}
}
return mutableContact
}