2016-11-30 9 views
1

Perfectサーバを使用してクライアントに値を返すアプリケーションを開発しています。現時点では、別のAPIからデータをダウンロードして処理し、クライアントに送信する必要があります。Perfect/Swift Compilation OSXでの作業、Linuxでの失敗

ただし、OSXではうまくコンパイルされますが、Linuxでは正しくコンパイルされません。 Linuxはそのタイプが好きではないようですが、違いがどういうものか分かりません。私はLinuxにSwift 3.0.1をインストールしました。OSX上にXcode 8.1があるので、それも同じバージョンです(はい、私はチェックしました)。コンパイラは、Linuxで失敗しているのはここ

は次のとおりです。

104:

class func getAllPrices(_ code: String, isAlive: Bool, countryCode: String) -> ([BuyPriceObject]?, [String:AnyObject]?){ 

116:

errors["bw"] = bw.1 as AnyObject? 
ここ

swift: /home/buildnode/disk2/workspace/oss-swift-3.0-package-linux-ubuntu-14_04/swift/lib/Sema/CSApply.cpp:3223: swift::Expr *(anonymous namespace)::ExprRewriter::visitCoerceExpr(swift::CoerceExpr *): Assertion `!failed && "Not convertible?"' failed. 
... 
1. While type-checking 'getAllPrices' at /root/app/Sources/ValueProcessing.swift:104:9 
2. While type-checking expression at [/root/app/Sources/ValueProcessing.swift:116:17 - line:116:58] RangeText="errors["bw"] = bw.1 as AnyObject?" 
<unknown>:0: error: unable to execute command: Aborted 

は、コンパイラによって問題の行があります

Inこのスニペット、 'getAllPrices'関数は、 'bw'という名前のタプルを返します。返されたすべてのエラーを「エラー」ディクショナリに追加し、任意でAnyObjectとして格納します。私が辞書をオプションにする理由は、関数がエラーを返さない場合です。

答えて

0

わかりました。私の愚かは、このミスを犯すするが、ここにある:

あなたは私が保管し、その後オプションANYOBJECT値を返すみました見ることができるように:「getAllPrices」関数は、戻り値の定義が

errors["bw"] = bw.1 as AnyObject? 

を用非オプションANYOBJECTタイプの[文字列:ANYOBJECT]辞書:

class func getAllPrices(_ code: String, isAlive: Bool, countryCode: String) -> ([BuyPriceObject]?, [String:AnyObject]?){ 

OSX上のスウィフトが端子INとXcodeで両方(気にしていないようどうして私に質問しないでください)、Linuxの迅速さはやや厳しいようです。

ソリューション:

errors["bw"] = bw.1 as AnyObject 
関連する問題