Разбор по телефонным номерам Parse swift - PullRequest
0 голосов
/ 25 июня 2018

В моем приложении я сохраняю телефонные номера пользователей, которые они мне дают, чтобы другие могли их найти и найти свои контакты в приложении. Но у меня возникают проблемы при разборе телефонных номеров, потому что пользователи могут сохранять телефонные номера разными способами:

- Код страны, код города, номер: +1 (код города) xxx-xxxx

- Код страны, номер: +1 xxx-xxxx

- Номер: xxx-xxxx

Я могу сохранить номер пользователя, добавив код города и номер в виде одного длинного номера и сохранив код страны отдельно. Я попытался проанализировать телефонные номера, взятые из Контактов, чтобы имитировать, как я сохранил номера, но это не работает. Есть ли что-то, что мне не хватает? Я скопировал код внизу:

    if accessGranted {
                    let contactStore = CNContactStore()
                    let keys = [CNContactPhoneNumbersKey]
                    let request = CNContactFetchRequest(keysToFetch: keys as [CNKeyDescriptor])
                    do {
                        try contactStore.enumerateContacts(with: request, usingBlock: { (contact, error) in
                            let phoneNumberRaw = contact.phoneNumbers.first?.value.stringValue ?? ""

                            var phoneNumberRawArray = phoneNumberRaw.components(separatedBy: " ")
                            var phoneString = ""
                            if phoneNumberRawArray.count >= 3 { //probably has country code in the front
                                //remove country code
                                phoneNumberRawArray.removeFirst()
                            }

                            //add to phone string
                            for phone in phoneNumberRawArray {
                                phoneString.append(phone)
                            }
                            phoneString = phoneString.replacingOccurrences(of: "(", with: "")
                            phoneString = phoneString.replacingOccurrences(of: " ", with: "")
                            phoneString = phoneString.replacingOccurrences(of: ")", with: "")
                            phoneString = phoneString.replacingOccurrences(of: "-", with: "")



                             self.contactsPhoneNumbers.append(phoneString)    

                                //get country code
                                for ContactNumber:CNLabeledValue in contact.phoneNumbers
                            {
                                let fullNumber  = ContactNumber.value
                                let countryCode = fullNumber.value(forKey: "countryCode") as? String
                                self.contactsCountryCode.append(countryCode!)
                            }

                        })
                    }
                    catch {
                        print("Unable to get contacts")
                    }
                }
...