2017-02-06 5 views
1

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>です:

enter image description here

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()からの復帰にこの不透明な値を取得していますか?

+0

非常に不思議です。私たちがこれを理解すると、私たちは皆、ばかみたいな気分になるだろう。ただそれを知っている。... – matt

+0

@matt lol .. yeah – Mark

答えて

0

ライブラリーがアプリとは別のバージョンのSwift(3.0?)にあるようです。最新バージョンのXcodeとSwiftを使用してMySqlSwiftNativeを再コンパイルする必要があるかもしれません。

+0

私は[GitHubからプロジェクト](https://github.com/mcorega/MySqlSwiftNative)をダウンロードした。 )、MySQLDriver.xcodeprojを自分のXcodeプロジェクトにドラッグしました。私はCocoapodsを使用していません。 – Mark

関連する問題