【问题标题】:Cannot subscript a value of type anyobject不能为任何对象类型的值下标
【发布时间】:2023-03-19 11:34:01
【问题描述】:

我目前已升级到新的 Xcode 7,以下代码在 swift 1.2 中从未出现任何错误,但现在它告诉我:

不能为任何对象类型的值下标

var imageArray : NSArray = []
let url = NSURL(string: (self.imageArray[indexPath.row][0] as? String)!)

我知道它是关于 [0] 的,但我如何重写它才能被接受?

【问题讨论】:

  • imageArray 中包含什么?你能显示你创建imageArray的代码吗?
  • 我已经更新了@Fogmeister 的问题
  • 所以imageArray 是一个Objective-C NSArray 但它里面到底是什么?你在里面放了什么?
  • 它是一个多维数组,第一个数组什么都没有,第二个有url。

标签: ios xcode swift2


【解决方案1】:

好的,所以首先你使用NSArray。你可以放弃它,让一切变得更容易。

在 Swift 中,尽可能使用强类型。在不需要时避免使用 Any 和 AnyObject。 (它们很少需要)。

发生错误是因为您没有告诉代码 imageArray 中的实际内容。

另外,imageArray 告诉我数组中充满了图像。更具描述性地命名您的变量。 imageUrlStringArrayarrayOfImageUrlArrays。无论如何,更具描述性的东西。

声明imageArray 喜欢...

var imageArray = [[String]]()

这告诉编译器imageArray 是一个二维数组,Strings 在第二级。

现在您可以轻松地创建您的 URL...

guard 
    let urlString = imageArray[indexPath.row].first,
    let url = NSURL(string: urlString)
    else { // Handle the inability to create a URL }

// Do something with the url

【讨论】:

  • 我会检查一下:)
  • 我收到以下错误:guard let ... 条件绑定的初始化程序必须具有可选类型而不是字符串。
  • @AaoIi 已编辑。它可能需要稍微改变。我在没有文档的情况下在 Safari 上写作。您正在使用 Xcode 编写并可以访问文档。这应该可以让您大致了解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
相关资源
最近更新 更多