Swift3 无法将Swift.UInt类型的值强制转换为Swift.UInt

Swift3 无法将Swift.UInt类型的值强制转换为Swift.UInt,swift3,Swift3,我正在尝试编写一个小的Swift程序,使用1.0.10版读取MySQL数据库。我使用的是Swift 3.0.2,我遇到了一个问题,它降低了字典的值 if let results = try query.readAllRows() { for row in results[0] { if let id = row["id"] { // as? UInt { print(id as! UInt) } } } 行是一个字典,调试

我正在尝试编写一个小的Swift程序,使用1.0.10版读取MySQL数据库。我使用的是Swift 3.0.2,我遇到了一个问题,它降低了字典的值

if let results = try query.readAllRows() {
    for row in results[0] {
        if let id = row["id"] { // as? UInt {
            print(id as! UInt)
        }
    }
}
是一个
字典
,调试器输出:

print语句产生以下错误:

无法将“Swift.UInt”(0x100be8340)类型的值强制转换为 “Swift.UInt”(0x1003ac960)

为什么会失败

更新:

在返回ResultSet数组之前,我在
func readAllRows()throws->[ResultSet]?
中添加了一条print语句

for row in arr[0] {
    if let id = row["id"] {
        print("\(id) \(type(of: id))")
    }
}
这个输出

1单位

看起来不错。所以我修改了我的代码来打印同样的东西

if let results = try query.readAllRows() {
    for row in results[0] {
        if let id = row["id"] { // as? UInt {
            print("\(id) \(type(of: id))")
        }
    }
}
这个输出

UInt(_值:(不透明值))UInt


因此,这可能解释了强制转换失败的原因,但为什么我从
readAllRows()

的返回中得到这个不透明的值?看起来库可能位于与您的应用程序不同的Swift(3.0?)版本上。您可能需要使用最新版本的Xcode和Swift重新编译mysqlswifftnative

非常神秘。当我们发现这一点时,我们都会觉得自己像个白痴,我就知道…@matt lol。。yeahI下载并将MySQLDriver.xcodeproj拖到我的Xcode项目中。我没有用椰子荚。