class Testdata: NSObject {
    dynamic var data1 = Data1()

    var updateDate: NSDate = NSDate()

    class Data1: NSObject {
        dynamic private(set) var version: [NSNumber] = []
        // unsignedChar配列として初期化しておく
    }
}

上記のような場合、以下のようにforKeyPathに配列を渡すことはできませんでした。
setValue(value: AnyObject?, forKeyPath: String)
配列に対しては使用できないのでしょうか。

let testdataobj = Testdata()
testdataobj.setValue(0x20, forKeyPath: "data1.version[0]")