2016-09-17 5 views
13

に変換できません取得します:スウィフト3の変換は「INT1割り込み」私がコンパイルされ、スウィフト3に実行され、次のエラーを取得していますスウィフト2のコードに変換しています「ブール」

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

私のコードabovをコンパイルする場合、上記

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

としてFMDB.hで定義された方法とFMDBを使用しているコードeは "(coinInfo.grade!="にフラグを立ててエラーを返します。

、私はそれがまだどうなるかどうかを確認するために、それを簡素化しようとした:

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

をし、まだ同じエラーを取得し、今回もフラグ「真」。

Screenshot of error

私はこの上の検索の束をやったとhttps://bugs.swift.org/browse/SR-2372以外の近いものを発見していないが、それは私が私のコードに影響を与えるとは思わないだろうタプルの問題です。

は、誰もがこの上でいくつかの光を当てるか、それはコンパイラのバグがある場合、回避策を提案することはできますか?

おかげ

+0

'Builtint.Int1'は' Bool'構造体の内部表現( '構造体の_value'プロパティです)このタイプがエラー/警告メッセージでポップアップすることは、一般的にコンパイラからの意図しない動作を指していることを示します。あなたがリンクするバグレポートは、一種のもこの動作を説明するかのように、コンパイラは三項演算の結果の型を推論することはできません>思えません。例えば。明示的に(代わりにコンパイラを信頼する) 'NSString'インスタンスを初期化するために文字列リテラルを使用すると、(:NSArrayの= [真NSStringの(文字列:? "foo" という):nsnullを()]' 'theArrayを聞かせて)エラーを回避します。 – dfri

+0

コメントありがとうございます。私は実際に私はこの方法が私のために少し扱いに​​くいされているだろうので、私は同じ行に複数の挿入を持っていたとして、私の質問を投稿するために使用した実際のコードを簡素化していました。下の一時的なヴァルスのアプローチで行きました。 – KevinR

答えて

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]) 
+0

おかげで、これは問題を過ぎて私を得た、「どれ」の前に使用されていませんでした。 – KevinR

+0

このエラーは、コードに異なるエラーが発生したときに表示されることがあります。私はそれについて混乱していたが、私は後にXcodeのを報告していなかったそのライン上の別のエラーが発生した考え出した、と私がいることを固定したときに、このエラーが去っていきました。 – csga5000

関連する問題