Как объявить пустой массив типа '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