2015-05-20 2 views
0

У меня есть случай, когда я хочу назначить массив объектов определенного типа переменной типа [Any]. Учитывая эти ссылки:Камень бетонный типа Любой?

var genericArray : [Any] 
let specificArray : [MyClass] 

Это вызывает ошибку компиляции:

genericArray = specificArray 
//Cannot assign value of type '[MyClass]' to value of type '[Any]' 

И так же это:

genericArray = specificArray as [Any] 
//'Any' is not a subtype of 'MyClass' 

Это работает:

genericArray = specificArray.map { $0 } 

Но, кажется, меньше чем элегантный. Есть ли лучший способ справиться с этим заданием?

ответ

0

Если ваш genericArray содержит экземпляры только типов классов (не включая типы функций), просто используйте var genericArray : [AnyObject]. Это будет работать, потому что для типа specificArray установлен MyClass, который является классом. Я думаю,