У меня наконец-то есть время, чтобы go вернуться и поработать над этим. Код ниже тянет адресные метки и идентификаторы. Идентификаторы в порядке. Проблема в том, что когда я печатаю адресную метку, это дает мне следующее:
_$!<Home>!$_
Это нормально или в моем коде есть что-то, что я могу изменить, чтобы это исправить? Все, что я хочу, чтобы это содержало, - "Дом". Нужно ли удалять первые и последние четыре символа, прежде чем они попадут в массив?
func getContactFromID_Ouote2(contactID: String)
{
struct contactAddresses
{
var theLabel: String
var theID: String
}
let store = CNContactStore()
var theName = CNContact()
var theTypes = [contactAddresses]()
var theAddressID: String = ""
var theAddressLabel: String = ""
let theKeys = [CNContactPostalAddressesKey] as [CNKeyDescriptor]
do {
theName = try store.unifiedContact(withIdentifier: contactID, keysToFetch: theKeys)
let postalAddress = theName.postalAddresses
postalAddress.forEach { (mailAddress) in
theTypes.append(contactAddresses(theLabel: mailAddress.label!, theID: mailAddress.identifier))
}
for theItem in theTypes
{
theAddressLabel = theItem.theLabel
theAddressID = theItem.theID
print(theAddressLabel)
print(theAddressID)
}
} catch {
print("Fetching contact data failed: \(error)")
}
Как проверить, есть ли несколько postalAddresses (home, work, et c). ) для контакта? Если существует несколько postalAddresses, тогда я планирую представить предупреждение, чтобы пользователь мог выбрать тот, который использовать. Представление предупреждения не проблема, мне просто нужна помощь в получении адресов.
Заранее спасибо.
func getContactFromID_Ouote(contactID: String)
{
let store = CNContactStore()
var theName = CNContact()
let theKeys = [CNContactNamePrefixKey,
CNContactGivenNameKey,
CNContactFamilyNameKey,
CNContactNameSuffixKey,
CNContactOrganizationNameKey,
CNContactPostalAddressesKey,
CNContactFormatter.descriptorForRequiredKeys(for: .fullName)] as! [CNKeyDescriptor]
do {
theName = try store.unifiedContact(withIdentifier: contactID, keysToFetch: theKeys)
contactName = CNContactFormatter.string(from: theName, style: .fullName)!
contactPrefix = theName.namePrefix
contactFirst = theName.givenName
contactLast = theName.familyName
companyName = theName.organizationName == "" ? "" : theName.organizationName
} catch {
print("Fetching contact data failed: \(error)")
}
if let firstPostalAddress = (theName.postalAddresses.first),
let labelValuePair = firstPostalAddress.value(forKey: "labelValuePair") as? AnyObject,
let finalPostalAddress = labelValuePair.value(forKey: "value") as? CNPostalAddress
{
mailAddress = CNPostalAddressFormatter.string(from: finalPostalAddress, style: .mailingAddress)
}
}