曾经在 iOS 9 中工作的代码是:
var valuesArray : [CNLabeledValue] = []
但我不知道如何在 Swift 3 中做到这一点。
曾经在 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