Обновить телефонный контакт одного элемента в массиве - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь обновить один элемент в контактах iphone.Я обновляю массив адресов электронной почты и не хочу влиять на остальные в массиве.

Например, я изменяю «домашний» адрес электронной почты из своего приложения, но если у них также есть «рабочий адрес электронной почты в контактах телефона, он удаляет его и добавляет только новый.Мне нужно сохранить все остальные поля в массиве.То же самое для телефона или адреса.

Это мое обновление:

let homeEmailEntry : String = email!
let homeEmail = CNLabeledValue(label:CNLabelHome, value:homeEmailEntry as NSString)
contactToUpdate.emailAddresses = [homeEmail]

let saveRequest = CNSaveRequest()
saveRequest.update(contactToUpdate)
try store.execute(saveRequest)

Это добавляет домашнюю электронную почту, но стирает рабочую электронную почту или что-либо еще в массиве.

1 Ответ

0 голосов
/ 30 сентября 2018

Вам нужно объединить существующие адреса электронной почты с новыми, которые вы добавляете.

contact.emailAddresses = contactToUpdate.emailAddresses + [homeEmail]

Или же вы можете добавить его.

contact.emailAddresses.append(homeEmail)

IЯ не уверен, что происходит здесь, если уже есть домашний адрес электронной почты, но вы можете удалить существующий домашний адрес электронной почты, прежде чем добавлять новый.

contact.emailAddresses = contact.emailAddresses.filter({ $0.label != CNLabelHome }) + [homeEmail]
...