Swift Error:对成员'下标'的模糊引用

jon*_*kel 32 self member let subscript swift

我是编码的新手,并选择了一些开源项目来获得这个想法.

我收到错误:

对成员'下标'的模糊引用

在下面的代码中:

let pictures = ( selectedRestaurant["Pictures"] as! NSArray ) // Error

let picture = ( pictures[zoomedPhotoIndex] as! NSDictionary )

let pictureURL = picture["url"] as! String

let imageURL = NSURL(string: pictureURL)
let urlRequest = NSURLRequest(URL: imageURL!)
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: NSOperationQueue.mainQueue()) {
    response, data, error in
    if error == nil && data != nil {

        self.imageView.image = UIImage(data: data!)
        self.imageView.contentMode = UIViewContentMode.ScaleAspectFit

    }
}
Run Code Online (Sandbox Code Playgroud)

Sha*_*yag 25

只需明确指定什么类型pictures:

所以代替:

let pictures = selectedRestaurant["Pictures"] as! NSArray
Run Code Online (Sandbox Code Playgroud)

写:

let pictures: NSArray = selectedRestaurant["Pictures"] as! NSArray
Run Code Online (Sandbox Code Playgroud)


Sco*_*ter 22

对我来说,答案是明确说明我要投射到的数组的类型:

if let foo = dictionary["bar"] as? [String]
Run Code Online (Sandbox Code Playgroud)

  • 这也是我所需要的.谢谢! (2认同)

Mik*_*keG 2

这意味着“Pictures”不是有效的下标。看起来您正在创建一个名为 的常量pictures,并且尝试为其分配一个值selectedRestaraunt["Pictures"],然后尝试将其转换为NSArray. 如果selectedrestaraunt已经是一个数组,那么[]后面括号中的内容selectedRestaraunt应该是一个整数值,该值将引用数组中的索引selectedRestaraunt。显然“Pictures”不是一个整数,它是一个字符串。

如果您尝试访问数组中的数组。这意味着这Pictures是一个存储在selectedRestaraunt数组中的数组,然后您可以使用selectedRestaraunt[index of Pictures array]where[index of pictures array]是一个整数来访问它,该整数等于该数组在数组Picutres中驻留的索引号selectedRestaraunt