【问题标题】:Cannot assign a value of type '[AnyObject]' to a value of type '[String]' Swift 2无法将“[AnyObject]”类型的值分配给“[String]”类型的值 Swift 2
【发布时间】:2023-03-30 16:35:01
【问题描述】:

我尝试将我的项目从 Swift 更新到 Swift 2,但出现以下代码错误:

let PhotoController = UIImagePickerController() 
        PhotoController.delegate = self
        PhotoController.sourceType = UIImagePickerControllerSourceType.Camera 

        let mediaTypes:[AnyObject] = [kUTTypeImage] 

        PhotoController.mediaTypes = mediaTypes 

        PhotoController.allowsEditing  = false

        self.presentViewController(PhotoController, animated: true, completion: nil)

在下面一行:

PhotoController.mediaTypes = mediaTypes

编译器提示此错误:

无法将“[AnyObject]”类型的值分配给“[String]”类型的值

你能帮帮我吗? 非常感谢!

【问题讨论】:

    标签: swift2


    【解决方案1】:

    如果您确定数组的类型为[String],您可以进行强制转换:

    PhotoController.mediaTypes = mediaTypes as! [String]
    

    否则我会建议使用 flatMap 和每个对象的单独可选转换:

    PhotoController.mediaTypes = mediaTypes.flatMap{ $0 as? String }
    

    【讨论】:

      【解决方案2】:

      只是我的猜测,但根据文档判断 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImagePickerController_Class/#//apple_ref/occ/instp/UIImagePickerController/mediaTypes

      尽管在他们的示例中 mediaTypes 是 [AnyObject] Apple 人将其转换为 [String](Obj-c 上的示例!)

      myImagePickerController.mediaTypes =
          [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil];
      

      所以我会转换成字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多