以前在iOS 9中运行的代码是:
var valuesArray : [CNLabeledValue] = []
但是我不知道如何在Swift 3中做到这一点。
解决方案:
var phoneNumbers : [CNLabeledValue<CNPhoneNumber>] = []
正如OOPer在这篇文章中指出的:
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