【问题标题】:Ambiguous use of subscript compiler error下标使用不明确编译错误
【发布时间】:2017-01-07 06:07:08
【问题描述】:

下面的功能是ELCImagePicker 选择多个图像,我添加了我的代码,用于运行的代码可能在安装 Parse SDK 后突然出现错误

“下标使用不明确”

在这行代码:

if let image = item[UIImagePickerControllerOriginalImage] as? UIImage

代码:

func elcImagePickerController(_ picker: ELCImagePickerController!, didFinishPickingMediaWithInfo info: [Any]!) {

    self.dismiss(animated: true, completion: nil)
    var i = 0
    var z = 0

    var imageViews = [Any]() // array of any object used to save the selected imagesviews to it so we can display it on the viewcontroller
    for item in info as [AnyObject]
    {
        z += 0 //we used z = +0 as the arrays always starts at index 0 not 1
        i += 1  //we used another var i += 1 as UIImagePickerControllerOriginalImage starts at 1

        if let image = item[UIImagePickerControllerOriginalImage] as? UIImage
        {
            imagearray.insert(image, at: z) // array of images to be used in "Saved" function below to save the images selected to core data

            image_view = UIImageView(image: image)

            let currentImageView = UIImageView(frame: CGRect(x: 130 + (i * 10), y: 50 + (i * 5), width: 50, height: 100))
            currentImageView.contentMode = .scaleAspectFit
            currentImageView.image = image_view.image
            imageViews.append(currentImageView)
        }

    }
    var y = 0
    var imageview: AnyObject
    for _ in imageViews as [Any] {
        imageview = imageViews[y] as AnyObject
        view.addSubview(imageview as! UIView)
        y += 1
    }
}

【问题讨论】:

标签: arrays swift swift3


【解决方案1】:

您需要告诉编译器 item 的类型,因此不要将 info 数组转换为 [AnyObject] 类型,而是将其转换为 [[String:Any]]

if let imagesArray = info as? [[String:Any]] {
    for item in imagesArray {
        if let image = item[UIImagePickerControllerOriginalImage] as? UIImage {
            //Access image instance 
        }
    }
}

【讨论】:

  • @Nirva D - 很好,它起作用了,但你知道为什么它突然出现而且之前没有发生过 - 我只是想了解
  • 从 Swift 3 开始,您需要在使用它之前告诉编译器它的类型,并且您正在使用 Swift 3,对吧?
  • 是的,但直到一个小时前它还在工作,20 分钟前出现了这个错误
  • @rania 在 Swift 3 中它以前工作过吗?或者您正在从 Swift 2.3 迁移到 Swift 3?
  • 不,我没有迁移我一直在使用 swift 3 - 我只安装了 Parse SDK 并且出现了这个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2016-09-11
  • 2014-04-08
  • 1970-01-01
相关资源
最近更新 更多