Swift3 无法将Swift.UInt类型的值强制转换为Swift.UInt
我正在尝试编写一个小的Swift程序,使用1.0.10版读取MySQL数据库。我使用的是Swift 3.0.2,我遇到了一个问题,它降低了字典的值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) } } } 行是一个字典,调试
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项目中。我没有用椰子荚。