2017-08-29 2 views
-2
class Model: NSObject { 
    var numbers : Array<Int> = [] 
} 

internal func test() { 
    let model : Model = Model.init() 
    model.setValue([1,2,3], forKey: "numbers") 
    print(model.numbers) 
} 

test()//[1, 2, 3] 

Aber wenn ich die oben var numbers : [Int] = [] zu var numbers :[Int64] = [] ändern, wird es zum Absturz bringen. Warum das? Wie kann ich es lösen?Array-Typ-Umwandlung in Swift

+2

Können Sie Ihre Frage bearbeiten !, es überhaupt nicht klar. Wie kannst du anfangen mit "Aber wenn ich das obige ändere ...." !? – Haz

+0

Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten Code enthalten, der für die Reproduktion in der Frage erforderlich ist. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels. –

Antwort

0

Zuerst KVC in diesem Fall nicht verwenden. Verwenden Sie den Setter mit Punktnotation.

Zweitens, wenn Sie wollen [Int64] werfen den Typ

class Model: NSObject { 
    var numbers = [Int64]() 
} 

internal func test() { 
    let model = Model() 
    model.numbers = [1,2,3] as [Int64] 
    print(model.numbers) 
} 

test()//[1, 2, 3]