在 Swift Linux 中使用 'Any' 和 'AnyObject' 类型会出错

Using 'Any' and 'AnyObject' types in Swift Linux gives errors

我有这行代码:

produceJSONMessage(message: message as AnyObject)

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

/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 通常是 String:Any 类型或普通字符串

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

我通过从上面的代码中删除 AnyObject 并将其替换为 Any 来使其工作。也许我误用了 AnyObject 类型,但它在 Mac 中构建正常但在 Linux 中构建错误并没有帮助!