Я конвертирую код Swift 2, который компилируется и запускается в Swift 3, и я получаю следующую ошибку:
'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, но это проблема с кортежами, которые я бы не использовал, t думаю, повлияет на мой код.
Может ли кто-нибудь пролить свет на это или предложить обходной путь, если это ошибка компилятора?
Спасибо