Есть ли способ получить экземпляр элемента Array из пустого массива? (Мне нужны свойства dynamic
, потому что я использую некоторые методы KVC на NSObject
)
import Foundation
class BaseClass: NSObject {
func myFunction() {
doWork()
}
}
class Car: BaseClass {
dynamic var id: Int = 0
}
class Bus: BaseClass {
dynamic var seats: Int = 0
}
var cars = Array<Car>()
Мне нужно, чтобы получить экземпляр пустого объекта Car из этого пустого массива, например:
var carFromArray = cars.instanceObject() // will return empty Car object
Я знаю, что могу использовать:
var object = Array<Car>.Element()
но это не работает для меня, так как я получаю массив из параметра функции, и я не знаю этого класса элемента.
Я попытался написать свой собственный тип, который будет делать это, и он работает, но тогда я не могу пометить его как dynamic
, поскольку он не может быть представлен в Objective C. Я попытался написать расширение Array
extension Array {
func instanceObject<T: BaseClass>() -> T? {
return T()
}
}
но когда я его использую, он иногда вызывает ошибку fatal error: NSArray element failed to match the Swift Array Element type