如何使用 Swift 3 声明一个类型为"CNLabeledValue"的空数组?



以前在iOS 9中运行的代码是:

var valuesArray : [CNLabeledValue] = []

但是我不知道如何在Swift 3中做到这一点。

解决方案:

var phoneNumbers : [CNLabeledValue<CNPhoneNumber>] = []

正如OOPer在这篇文章中指出的:

CNLabeledValue的泛型参数声明为<ValueType : NSCopying, NSSecureCoding>。因此,在这种情况下,您可以选择符合NSCopyingNSSecureCoding的任何类型。NSString有,String没有。

像这样(以填写电话号码为例):

            let phonesArray : [Phones] = phones!
            var phonesToAdd = [CNLabeledValue]()
            for phone in phonesArray
            {
                if let phoneT = phone.phoneType
                {
                    if phoneT.lowercaseString == "mobile"
                    {
                        let mobilePhone = CNLabeledValue(label: "mobile",value: CNPhoneNumber(stringValue: phone.phone))
                        phonesToAdd.append(mobilePhone)
                    }
                    if phoneT.lowercaseString == "landline"
                    {
                        let landlinePhone = CNLabeledValue(label: "landline",value: CNPhoneNumber(stringValue: phone.phone))
                        phonesToAdd.append(landlinePhone)
                    }
                }
            }
            contactData.phoneNumbers = phonesToAdd

最新更新