Как объявить пустой массив типа 'CNLabeledValue' с помощью Swift 3?

Код, который работал в iOS 9 был:

var valuesArray : [CNLabeledValue] = []

Но я не могу понять, как это сделать в Swift 3.

2 ответа

Это решение:

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

Как отметил в этом посте ООПер:

CNLabeledValueОбщий параметр объявлен как <ValueType : NSCopying, NSSecureCoding>, Таким образом, в этом случае вы можете выбрать любой тип, который соответствует NSCopying а также NSSecureCoding, 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
Другие вопросы по тегам