MySqlSwiftNativeバージョン1.0.10を使用して、MySQLデータベースを読み取るための小さなSwiftプログラムを作成しようとしています。私はSwift 3.0.2を使用していて、Dictionary値を失った問題に遭遇しました。Swift.UInt型の値をSwift.UIntにキャストできません
if let results = try query.readAllRows() {
for row in results[0] {
if let id = row["id"] { // as? UInt {
print(id as! UInt)
}
}
}
row
、デバッガ出力Dictionary<String, Any>
です:
print文は次のエラーを生成します。
Could not cast value of type 'Swift.UInt' (0x100be8340) to 'Swift.UInt' (0x1003ac960)
これはなぜ失敗するのでしょうか?
更新:
私は、ResultSetの列が返される直前MySQLDriver functionfunc readAllRows() throws -> [ResultSet]?
にprint文を追加しました。
for row in arr[0] {
if let id = row["id"] {
print("\(id) \(type(of: id))")
}
}
これは
1 UInt
を出力がよさそうです。そこで私は同じことを印刷するようにコードを修正しました。
if let results = try query.readAllRows() {
for row in results[0] {
if let id = row["id"] { // as? UInt {
print("\(id) \(type(of: id))")
}
}
}
この出力
UInt(_value: (Opaque Value)) UInt
キャストが失敗した理由だから、これは説明するかもしれないが、なぜ私はreadAllRows()
からの復帰にこの不透明な値を取得していますか?
非常に不思議です。私たちがこれを理解すると、私たちは皆、ばかみたいな気分になるだろう。ただそれを知っている。... – matt
@matt lol .. yeah – Mark