2016-10-03 3 views
0

Я переношу большую базу кода в Swift 3.0. Я генерации ошибки "Cannot convert value of type 'Array<MultivalueEntry<Date>>?' to type 'AnyObject' in coercion.Swift 3.0 Ошибка «Невозможно преобразовать значение типа»

enter image description here

Я даже попытался установить новое_значение на 'Array<MultivalueEntry<Date>>?' ниже, и он по-прежнему генерируется ошибка: enter image description here

И, наконец, попытался установить новое_значение в 'Array<MultivalueEntry<NSObject>>?' без успеха : enter image description here

Что я делаю неправильно?

UPDATE MultiValueEntry:

public struct MultivalueEntry<T> { 
    public var value : T 
    public var label : String? 
    public let id : Int 

    public init(value: T, label: String?, id: Int) { 
     self.value = value 
     self.label = label 
     self.id = id 
    } 
} 

ответ

1

Проблема заключается в том, что массив дженериков не может быть превращена в NSArray или CFArray, потому что Objective-C ничего не знает о дженериков. Ну, MultivalueEntry<Date> является общим.

+0

Gotcha, thanks Matt. Как я могу исправить это, если я хочу обновить это до Swift 3.0? –

+0

Я не знаю, потому что вы не объяснили, что такое MultivalueEntry. Почему вы его используете? Если речь идет о контактах/адресной книге, вы должны отказаться от структуры AddressBook и использовать структуру контактов. – matt

+0

Я использую SwiftAddressBook, и я пытаюсь обновить свой проект до Swift 3.0. К сожалению, SwiftAddressBook не поддерживается в Swift 3.0, поэтому я его вручную обновляю. У меня был большой успех с SwiftAddressBook в iOS9, я использую его для захвата информации из контактов пользователей. Я хотел бы придерживаться его, но если я не смогу его использовать, я попробую структуру контактов. –

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