2016-11-30 47 views
1

因此,我使用Perfect服务器来开发将值返回给客户端的应用程序。目前,它需要从另一个API下载一些数据,对其进行处理,并将其发送到客户端。完美/ Swift编译在OSX中工作,在Linux中失败

但是,由于某些原因,它在OSX中编译得很好,但在Linux中却没有。 Linux似乎并不喜欢这些类型,但我看不出有什么不同。我在Linux上安装了Swift 3.0.1,并且由于我在OSX上安装了Xcode 8.1,所以它也是相同的版本(是的,我选中了)。

这里是编译器未能在Linux中:由编译器

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 

下面是有问题的线路:

104:

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

116:

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

In这个片段,'getAllPrices'函数返回一个我命名为'bw'的元组。我将所有返回到“错误”字典的错误附加到可选的AnyObject对象中。我让字典可选的原因是当函数没有返回任何错误时。

回答

0

好吧,算出来。我的傻犯这个错误,但在这里它是:

正如你可以看到我试着存储,然后返回一个可选AnyObject值:

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

然而,“getAllPrices”函数定义了一个返回值一个非可选AnyObject类型的的[字符串:AnyObject]词典:

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

在OSX夫特似乎不关心(无论是在终端和在Xcode它的建立,不要问我为什么),但Linux迅速似乎有点严格。

解决方案:

errors["bw"] = bw.1 as AnyObject 
相关问题