ios - swift 2 : Issue when initializing a UIActivityViewController in Swift: Type of expression is ambiguous without more context

标签 ios swift2

我不明白为什么我用来初始化 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/

相关文章:

ios - 在 UITableViewController 的 refreshControl 上缓慢向下滑动刷新导致 view 向下跳转

ios - Objective C - 每个 View Controller 的全局变量

ios - 如何使用 Swift 在 ios 中关闭 viewController

ios - Collection View 内的两个定向单元格,如何获取单元格标题?

ios - 当我滚动我的 tableview 时,事件的 tableView 单元格不断被禁用

facebook - 调用 Parse Facebook 登录时发出 SIGABRT 信号

ios - CCCrypt iOS Swift 3 中的奇怪行为

iOS facebook 登录响应不包含配置文件数据

ios - 如何过滤掉第7个字符为冒号的数组对象?

macos - 左键与右键单击状态栏项目 Mac Swift 2