我不明白为什么我用来初始化 UIActivityViewController
的以下代码会导致错误:Type of expression is ambiguous without more context
let shareText = "..."
let url = NSURL(string: "http://google.com")
let shareObjects = [shareText, url] // Compiler error happens here.
let controller = UIActivityViewController(activityItems: shareObjects, applicationActivities: nil)
对象数组显然包含一个 String
和一个 NSURL
。无论如何,包含这两者的数组字面量肯定应该根据直觉假定最低的公共(public)类型(比如最近的公共(public)祖先)[AnyObject]
。
强制向下转换也不起作用:即说 let shareObjects = [shareText, url] as! [AnyObject]
不会使错误消失。
最佳答案
好吧,我刚刚找到原因。
NSURL 的 init
是可失败的,这使得 url
变量实际上是一个可选的。
shareText
不是可选的。
将非可选的 shareText
与可选的 url
一起粘贴到一个数组中会导致错误。
解决方案是确保 url 是非可选的。
关于ios - swift 2 : Issue when initializing a UIActivityViewController in Swift: Type of expression is ambiguous without more context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202030/