質問: test1.valueForKeyPath("testUint8") as! NSNumber ``` とすると落ちることはないのですが、やはり、 aは (NsNumber) Int32(値) となってしまいます。 valueForKeyPathで取得する場合のキャストの方法が何かおかしいのでしょうか。
回答: valueForKeyPathの引数は文字列なので、 `valueForKeyPath(testUint8)` ではなく `valueForKeyPath("testUint8")` になります。 また、valueForKeyPathの返り値はNSNumber?なので、Optionalを外した後、NSNumberから数値に変換する必要があります。例題の場合でしたら、 `let a = (test1.valueForKeyPath("testUint8") as! NSNumber).unsignedCharValue` でUint8型の結果が得られるはずです。