Poniższy kod ulega awarii w Swift 3, czy ktoś może wyjaśnić dlaczego?swift 3 tablica struktur -> rzut do NSObject -> odrzucenie => awaria
struct S {
let a:Int
}
let t = [S(a: 8)]
let u:AnyObject = t as NSObject
let v:[S] = u as! [S]
Czy to dlatego, że w Swift 3 tablica kodowanym jest NSObject (nie ma go w Swift 2) i jakoś nie mogą być konwertowane do NSArray dobrze? I dlaczego jest NSObject ..
Czy 'letz: AnyObject = t jako NSObject' nawet kompiluje się dla Ciebie ...? Tablice w swift są typami wartości i naturalnie nie pochodzą z konkretnej klasy typu 'NSObject'. W Swift 2 niejawne mostkowanie rodzimych typów Swif i typów Obj-C może pozwolić na nieco mylące konwersje, ale domyślne funkcje pomostowe zostały usunięte w Swift 3. – dfri
To dziwne, skoro 'let v = u as? [S] 'działa. – JAL
@dfri - tak, kompiluje, może to być błąd w Swift 3 .. – silyevsk