我有这行代码:
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。