Убедитесь, что номер телефона UITextField имеет префикс "+" - PullRequest
0 голосов
/ 24 мая 2019

У меня есть несколько UITextField, где пользователь может вставить в него номера телефонов.Когда я нажимаю кнопку «Отправить», она отправляет автоматическое сообщение на указанные номера.Все работает хорошо, но я хочу, чтобы, нажимая кнопку «Отправить», я проверял, есть ли у UITextFields, в котором есть текст, символ + перед номером телефона, указанным перед подключением кмой сервер для отправки автоматического сообщения.Как мне отправить уведомление пользователю, если на указанном номере телефона нет символа +?

ViewController:

class ViewController: UIViewController {

   @IBOutlet weak var scrollviewcontact: UIScrollView!
    @IBOutlet weak var viewcontact: UIView!

    @IBOutlet weak var phonenumber: UITextField!
    @IBOutlet weak var phonenumber1: UITextField!
    @IBOutlet weak var phonenumber2: UITextField!
    @IBOutlet weak var phonenumber3: UITextField!

    var currentTextField: UITextField?

    private let contactPicker = CNContactPickerViewController()

    override func viewDidLoad() {
        super.viewDidLoad()

        phonenumber.textContentType = .telephoneNumber
        phonenumber1.textContentType = .telephoneNumber
        phonenumber2.textContentType = .telephoneNumber
        phonenumber3.textContentType = .telephoneNumber

     }


    @IBAction func sendbutton(_ sender: Any) {

        var numArray: Array<Any>

        numArray = [phonenumber.text!, phonenumber1.text!, phonenumber2.text!, phonenumber3.text!]

            let Url = String(format: "//URL")
            guard let serviceUrl = URL(string: Url) else { return }
            var request = URLRequest(url: serviceUrl)
            request.httpMethod = "POST"
            request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
            guard let httpBody = try? JSONSerialization.data(withJSONObject: numArray, options:[]) else {
                return
            }
            request.httpBody = httpBody

            let session = URLSession.shared
            session.dataTask(with: request) { (data, response, error) in
                if let response = response {
                    print(response)
                }
                if let data = data {
                    do {
                        let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments)
                        print("json ", json)
                    } catch {
                        print(error)
                    }
                }
                }.resume()



}
    extension ViewController: CNContactPickerDelegate {

        func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {


            let phoneNumberCount = contact.phoneNumbers.count

            guard phoneNumberCount > 0 else {
                dismiss(animated: true)

                return
            }

            if phoneNumberCount == 1 {
                setNumberFromContact(contactNumber: contact.phoneNumbers[0].value.stringValue)

            }else{

                let alertController = UIAlertController(title: "Select one of the numbers", message: nil, preferredStyle: .alert)

                for i in 0...phoneNumberCount-1 {
                    let phoneAction = UIAlertAction(title: contact.phoneNumbers[i].value.stringValue, style: .default, handler: {
                        alert -> Void in
                        self.setNumberFromContact(contactNumber: contact.phoneNumbers[i].value.stringValue)
                    })
                    alertController.addAction(phoneAction)
                }
                let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: {
                    alert -> Void in

                })
                alertController.addAction(cancelAction)

                dismiss(animated: true)
                self.present(alertController, animated: true, completion: nil)
            }
        }

        func setNumberFromContact(contactNumber: String) {

            var contactNumber = contactNumber.replacingOccurrences(of: "-", with: "")
            contactNumber = contactNumber.replacingOccurrences(of: "(", with: "")
            contactNumber = contactNumber.replacingOccurrences(of: ")", with: "")
            contactNumber = contactNumber.replacingOccurrences(of: " ", with: "")

            currentTextField?.text = String(contactNumber)

        }

        func contactPickerDidCancel(_ picker: CNContactPickerViewController) {

        }
}

Цель, которую я пытаюсь выполнитьДостигается то, что при нажатии кнопки «Отправить» он проверяет, в каком UITextField содержится текст, а если в качестве префикса нет +, должно появиться предупреждающее сообщение.

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Вы можете использовать метод hasPrefix.Например:

for num in numArray {
    if num.hasPrefix("+") {
        // do something
    } else {
        // do something else
    }
}
0 голосов
/ 24 мая 2019

Можно попробовать

let numArray = [phonenumber.text!, phonenumber1.text!, phonenumber2.text!, phonenumber3.text!] 
guard numArray.filter { $0.hasPrefix("+") }.count == numArray.count else { 
  // alert with message make sure all textfields has + prefix
 return
}
...