以编程方式存储iOS联系人,如果可能,可以使用现有联系人完全更新和统一

时间:2016-03-12 17:53:37

标签: ios swift contact

我正在为我的俱乐部编写一个应用程序,该应用程序显示保存在iOS应用程序服务器上的联系人。我已经可以连接并显示所有信息,并可以将联系人保存到iOS地址簿。然而,目标是在那里建立一个联系人,该联系人唯一地链接到我的应用程序保存的联系人,以便我以后可以修改联系人以准确更新其中的信息。现在我知道iOS有统一的联系人(这样你就可以链接2个联系人,形成1个统一联系人)。是否可以保存到应用程序管理的联系人,并使该联系人与用户创建的联系人合并/统一,该联系人匹配的百分比(例如,基于给定姓名和姓氏进行匹配)。

我已经拥有:

import Contacts
import ContactsUI

并添加了:

CNContactPickerDelegate

要管理我要添加的联系人,我添加了一个包含用户信息的小类:

class Contact {
    var givenName : String?
    var familyName : String?
    var mobile : String?
    var email : String?
    var HouseNumber : String?
    var city : String?
    var postalcode : String?
    var street : String?
    var birthdate : NSDate?

    func addName(givenName : String) {
        self.givenName = givenName
    }

    func addFamilyName(familyName : String) {
        self.familyName = familyName
    }

    func addMobile(mobile : String) {
        self.mobile = mobile
    }

    func addHouseNumber(HouseNumber : String) {
        self.HouseNumber = HouseNumber
    }

    func addEmail(email : String) {
        self.email = email
    }

    func addCity(city : String) {
        self.city = city
    }

    func addPostal(postal : String) {
        self.postal = postal
    }

    func addStreet(street : String) {
        self.street = street
    }

    func addBirthday(birtday : NSDate) {
        self.birthday = birtday
    }

}

因此,在保存我使用的联系人时:

let cnContact = CNMutableContact()
cnContact.givenName = contact.givenName! // offcourse with if-let statements :-)
cnContact.familyName = contact.familyName!
cnContact.emailAddresses = [CNLabeledValue(label: CNLabelHome, value email)]
//.... //

最后使用以下方式存储它们:

let store = CNContactStore()
let saveRequest = CNSaveRequest()
saveRequest.addContact(cnContact, toContainerWithIdentifier: nil)
try! store.executeSaveRequest(saveRequest)

现在,我可以更新记录的方法是使用ContactsUI并更新所选联系人。但我想以编程方式更新所有内容并更改此应用程序之前保存的联系人。有没有办法实现这个目标?

0 个答案:

没有答案