Swift 3 转换得到 'Int1' 无法转换为 'Bool'
Swift 3 conversion gets 'Int1' is not convertible to 'Bool'
我正在将编译并运行的 Swift 2 代码转换为 Swift 3,但出现以下错误:
'Int1' is not convertible to '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 之外没有发现任何接近的东西,但这是元组的问题,我认为这不会影响我的代码。
如果这是一个编译器错误,任何人都可以阐明这一点或提出解决方法吗?
谢谢
正如您自己所写,您的问题与描述的问题相同 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])
我正在将编译并运行的 Swift 2 代码转换为 Swift 3,但出现以下错误:
'Int1' is not convertible to '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 之外没有发现任何接近的东西,但这是元组的问题,我认为这不会影响我的代码。
如果这是一个编译器错误,任何人都可以阐明这一点或提出解决方法吗?
谢谢
正如您自己所写,您的问题与描述的问题相同 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])