I have a code to retrieve all phone numbers in user contacts, but you want to filter only mobile numbers. Currently, I just do this by only adding numbers with the first digit "+" or the second digit "7" to the array, as shown below:
func findContacts () -> [CNContact]{ let keysToFetch = [CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),CNContactPhoneNumbersKey] let fetchRequest: CNContactFetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch) var contacts = [CNContact]() CNContact.localizedStringForKey(CNLabelPhoneNumberiPhone) fetchRequest.mutableObjects = false fetchRequest.unifyResults = true fetchRequest.sortOrder = .UserDefault let contactStoreID = CNContactStore().defaultContainerIdentifier() do { try CNContactStore( ).enumerateContactsWithFetchRequest(fetchRequest) { (let contact, let stop) -> Void in if contact.phoneNumbers.count > 0 { contacts.append(contact) } if (contact.isKeyAvailable(CNContactPhoneNumbersKey)) { for phoneNumber:CNLabeledValue in contact.phoneNumbers { let number = phoneNumber.value as! CNPhoneNumber print(number.stringValue) let index = number.stringValue.startIndex.advancedBy(1) let indexPlus = number.stringValue.startIndex.advancedBy(0) if number.stringValue[index] == Character(String(7)) || number.stringValue[indexPlus] == Character("+"){ self.allNumbers.append("\(number.stringValue)") } } } }
Since the contacts are stored on the iPhone with a βmobileβ tag, I was wondering if only these numbers could be added to the array. Thanks:)
source share