2016-09-23 60 views
0

所使用的iOS中的9到工作代码为:如何使用Swift 3声明一个类型为'CNLabeledValue'的空数组?

var valuesArray : [CNLabeledValue] = [] 

但我无法弄清楚如何做到这一点的斯威夫特3

+0

'CNLabeledValue'是斯威夫特3泛型类,所以你不能有型CNLabeledValue'的'东西 - 它必须是'CNLabeledValue '。其中的“什么”取决于你对这个数组所做的事情,所以如果没有关于你的数组如何使用的大图,没有太多的帮助。 – rickster

+0

我正在使用联系人框架,所以是一个CNPhoneNumber数组。 –

+0

'var valuesArray:[CNLabeledValue ] = []'解决问题。 – Chandan

回答

2

这是解决方案:

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

由于OOPer在this post指出:

CNLabeledValue的泛型参数是德分类为<ValueType : NSCopying, NSSecureCoding>。因此,在这种情况下,您可以选择符合NSCopyingNSSecureCoding的任何类型。 NSString确实和String不确定。

+0

被引用的句子可能会导致您的案例中的一些误解。您可能需要为“ValueType”选择一种适当的类型 - 在您的情况下,它是“CNPhoneNumber”。 “任何类型”部分不适用于您的问题。 – OOPer

0

这样的事情(例如用填写手机号码):

  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 
+0

OP指定Swift 3,你的代码似乎是用Swift 2编写的。 – OOPer

+0

好的,如果是swift 3有意义写这样的东西[CNLabeledValue ]() – nerowolfe

相关问题