如果Statement with Array Variables超出范围Swift

时间:2018-03-15 00:14:34

标签: arrays swift if-statement

我试图搜索用户的联系人,但我的一条if语句被破坏了。它检查输入的某个索引处的字符是否与givenName,familyName和phoneNumber的相同索引的字符匹配。我的问题是,有时输入的字符数大于givenName,familyName或phoneNumber中的字符数。这使得我的if语句比较输入的某个索引处的字符和不存在的索引处的字符。例如,它将charInput [2]与charGivenName [2]进行比较,但charGivenName仅在charGivenName [0]和charGivenName [1]中具有值。由于charGivenName [2]不存在,我的应用程序崩溃了。

有谁知道如何解决这个问题?

@IBAction func contactTextFieldChanged(_ sender: Any) {
    if contactTextField.text != "" {

        contactTableView.isHidden = false

        let request = CNContactFetchRequest(keysToFetch: keys as! [CNKeyDescriptor])
        do {

            try contactStore.enumerateContacts(with: request){
                (contact, stop) in

                self.contacts.append(contact)

                for phoneNumber in contact.phoneNumbers {

                    if phoneNumber.value.stringValue != ""{

                        let charGivenName = Array(contact.givenName)
                        let charFamilyName = Array(contact.familyName)
                        let charNumber = Array(phoneNumber.value.stringValue)
                        let charInput = Array(self.contactTextField.text!)
                        var matchBool = false

                        for inputCount in (0...charInput.count - 1) {

                            if charNumber[inputCount] == charInput[inputCount] || charGivenName[inputCount] == charInput[inputCount] || charFamilyName[inputCount] == charInput[inputCount]{

                                matchBool = true

                            } else {

                                matchBool = false
                                break

                            }

                            if matchBool == true {

                                print("\(contact.givenName) \(contact.familyName) \(phoneNumber.value.stringValue)")

                            }
                        }
                    }
                }
            }
        } catch {

            print("Error fetching contacts")

        }
    }
    if contactTextField.text == ""{

        contactTableView.isHidden = true

    }
}

0 个答案:

没有答案