2016-09-23 3 views
0

код, который используется для работы в прошивкой 9 был:Как объявить пустой массив типа CNLabeledValue с помощью Swift 3?

var valuesArray : [CNLabeledValue] = [] 

Но я не могу понять, как сделать это в Swift 3.

+0

'CNLabeledValue' является общим классом в Swift 3, так что вы не можете иметь что-то типа' CNLabeledValue' - это должен быть 'CNLabeledValue '. Какое «что-то» это зависит от того, что вы делаете с этим массивом, поэтому мы не можем предоставить больше помощи, не имея более подробной информации о том, как используется ваш массив. – rickster

+0

Я работаю с Framework контактов, так что это массив CNPhoneNumber. –

+0

'var valuesArray: [CNLabeledValue ] = []' Решить проблемы. – Chandan

ответ

2

Это решение:

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

Как OOPer отметил в this post:

CNLabeledValue «s общий параметр де как <ValueType : NSCopying, NSSecureCoding>. Таким образом, в этом случае вы можете выбрать любой тип, который соответствует NSCopying и NSSecureCoding. 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

Хорошо, в случае быстрого 3 есть смысл написать что-то вроде этого [CNLabeledValue ]() – nerowolfe

Смежные вопросы