我正在转换编译并运行到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"。
我已经对此进行了大量搜索,并且找不到除https://bugs.swift.org/browse/SR-2372以外的任何其他内容,但这是元组问题,我认为这不会影响我的代码
如果是编译器错误,任何人都可以对此有所了解或建议解决方法吗?
由于
答案 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])