Próbuję pobrać nazwiska i numery telefonów wszystkich kontaktów i umieścić je w tablicach za pomocą Swift na iOS. Zrobiłem to tak daleko:Jak uzyskać numer telefonu CNC w postaci Swift?
func findContacts() -> [CNContact] {
marrContactsNumber.removeAllObjects()
marrContactsName.removeAllObjects()
let store = CNContactStore()
let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey]
let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch)
var contacts = [CNContact]()
do {
try store.enumerateContactsWithFetchRequest(fetchRequest, usingBlock: { (let contact, let stop) -> Void in
contacts.append(contact)
self.marrContactsName.addObject(contact.givenName + " " + contact.familyName)
self.marrContactsNumber.addObject(contact.phoneNumbers)
print(contact.phoneNumbers)
}
catch let error as NSError {
print(error.localizedDescription)
}
print(marrContactsName.count)
print(marrContactsNumber.count)
return contacts
}
Po zakończeniu marrContactsName
zawiera tablicę nazw wszystkich moich kontaktów dokładnie tak, jak oczekiwano. tj. "John Doe". Jednak marrContactsNumber
zwraca tablicę wartości jak
[<CNLabeledValue: 0x158a19950: identifier=F831DC7E-5896-420F-AE46-489F6C14DA6E,
label=_$!<Work>!$_, value=<CNPhoneNumber: 0x158a19640: countryCode=us, digits=6751420000>>,
<CNLabeledValue: 0x158a19a80: identifier=ECD66568-C6DD-441D-9448-BDEDDE9A68E1,
label=_$!<Work>!$_, value=<CNPhoneNumber: 0x158a199b0: countryCode=us, digits=5342766455>>]
chciałbym wiedzieć, jak pobrać tylko numer (y) telefonu jako wartość (ów) String czyli „XXXXXXXXXX”. Zasadniczo, jak wywołać wartość cyfry. Dzięki!
valueForKey ("cyfry") nie jest publicznym interfejsem API, należy użyć właściwości stringValue: '(contact.phoneNumbers.first? .value jako? CNPhoneNumber)? StringValue' –
From, HamzaGhazouani in swift 3,' ((kontakt .phoneNumbers.first? .value)! as CNPhoneNumber) .stringValue' –
Tak więc zadziałało to we wszystkich przypadkach, z wyjątkiem sytuacji, gdy istnieje przedrostek kraju z przodu ("+1"). Wkopałem się w to, ale nie mogę znaleźć tego, czego szukam. Czy ktoś wie, jak TYLKO uzyskać 10-cyfrowy numer amerykański? – Jake