Swift 3转换得到了Int1'不能转换为Bool'

时间:2016-09-17 16:06:48

标签: ios swift3 xcode8

我正在转换编译并运行到Swift 3的Swift 2代码并收到以下错误:

  

' INT1'不可转换为' Bool'

代码如下:

isUpdated = sharedInstance.database!.executeUpdate(
"UPDATE Coin_Table SET upgrade=?, grade=?, WHERE coin_id=?", 
withArgumentsInArray: [
coinInfo.upgrade, (coinInfo.grade != nil) ? coinInfo.grade! : NSNull(), 
coinID])

上面的代码使用FMDB和FMDB.h中定义的方法

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments;

编译上面的代码时,它会标记"(coinInfo.grade!="并给出错误。

我尝试简化它以确定它是否仍会发生:

let theArray: NSArray = [true ? "foo" : NSNull()]

仍然得到相同的错误,这次它标记了" true"。

Screenshot of error

我已经对此进行了大量搜索,并且找不到除https://bugs.swift.org/browse/SR-2372以外的任何其他内容,但这是元组问题,我认为这不会影响我的代码

如果是编译器错误,任何人都可以对此有所了解或建议解决方法吗?

由于

1 个答案:

答案 0 :(得分:4)

正如您自己写的那样,您的问题与描述here的问题相同。错误发生))

为什么不使用临时变量来修复它:

let hasGrade: Any = (coinInfo.grade != nil) ? coinInfo.grade! : NSNull()
isUpdated = sharedInstance.database!.executeUpdate(
"UPDATE Coin_Table SET upgrade=?, grade=?, WHERE coin_id=?", 
withArgumentsInArray: [
coinInfo.upgrade, hasGrade, 
coinID])