【问题标题】:Cannot assign a value of type '(String!, Bool, [AnyObject]!, NSError!)->Void to a value of type UIActivityViewControllerCompletionWithItemsHandler?'无法将“(String!,Bool,[AnyObject]!,NSError!)->Void类型的值分配给UIActivityViewControllerCompletionWithItemsHandler类型的值?”
【发布时间】:2015-09-16 02:27:15
【问题描述】:

我的项目中有以下代码行...

@IBAction func shareMeme(sender: UIBarButtonItem) {

    let newMeme = save()
    let memedImage = newMeme.memedImage
    let activityViewController = UIActivityViewController(activityItems: [memedImage], applicationActivities: nil)

    presentViewController(activityViewController, animated: true, completion: nil)

    activityViewController.completionWithItemsHandler = {(type: String!, completed: Bool, returnedItems: [AnyObject]!, error: NSError!) -> Void in

        dispatch_async(dispatch_get_main_queue()){
            self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
        }
    }
}

我不断收到编译器错误“无法将 '(String!, Bool, [AnyObject]!, NSError!) -> Void' 类型的值分配给 'UIActivityViewControllerCompletionWithItemsHandler?' 类型的值”,指的是以下行代码...

    activityViewController.completionWithItemsHandler = {(type: String!, completed: Bool, returnedItems: [AnyObject]!, error: NSError!) -> Void in

任何建议将不胜感激。

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案1】:

    您的类型签名与UIActivityViewControllerCompletionWithItemsHandler 的定义不匹配,即(String?, Bool, [AnyObject]?, NSError?) -> Void。将您的!s 替换为?s,它应该可以正常工作。

    【讨论】:

      【解决方案2】:

      对于 Swift 3.0,签名应该是

      activityViewController.completionWithItemsHandler = { (activity: UIActivityType?, completed: Bool, returnedItems: [Any]?, error: Error?) in
      

      this post所示

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        相关资源
        最近更新 更多