0

我有这行代码:

produceJSONMessage(message: message as AnyObject)

这在 XCode (Mac) 中工作正常。但是在 linux 中使用swift build会产生错误:

/home/ubuntu/x/x/objects.swift:x:x: error: 'Any' is not convertible to 'AnyObject'; did you mean to use 'as!' to force downcast?

produceJSONMessage(message: message as AnyObject)

所以我按照它的建议使用produceJSONMessage(message: message as! AnyObject). 它在构建期间不会引发错误,但在运行时会崩溃:

Could not cast value of type 'Any' (0x9aab88) to 'Swift.AnyObject' (0x7f7c84007c88).

无论如何,我得到了它的构建并且没有抛出错误:

produceJSONMessage(message: message as? AnyObject)

新的问题是当函数接收到对象时,总是nil(在进入函数之前不是nil)。这是函数签名:

func produceJSONMessage(message: AnyObject? = nil)

通常在哪里message是一个字符串:任何类型或一个普通的字符串

这里有什么需要注意的吗?我发布的所有代码组合都适用于 Mac XCode。

4

1 回答 1

0

我通过AnyObject从上面的代码中删除并将它们替换为Any. 也许我误用了这种AnyObject类型,但它在 Mac 中构建良好但在 Linux 中却没有帮助!

于 2017-07-20T06:17:51.673 回答