2016-09-23 26 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

相關問題