Ios 类型Any没有下标成员(数组,Swift 3.0)

Ios 类型Any没有下标成员(数组,Swift 3.0),ios,arrays,swift,xcode,swift3,Ios,Arrays,Swift,Xcode,Swift3,两年前我开发了一个iOS应用程序,现在我需要更新它。我刚刚将我的Swift项目转换为3.0,我正在使用XCode8。我已经解决了几乎所有的问题,但我无法解决这个问题,即使在搜索已经打开的几乎所有与此错误有关的问题“Type Any没有下标成员” 谢谢你帮助我 问题 您遇到的问题是,您正在尝试访问对象类型为Any的下标(当前情况是尝试通过字符串键获取值) 解决方案 arrayPrefs是一个NSArray,作为[Any]桥接到Swift中。因为这是一个数组,所以您得到的是值arrayPrefs[i

两年前我开发了一个iOS应用程序,现在我需要更新它。我刚刚将我的Swift项目转换为3.0,我正在使用XCode8。我已经解决了几乎所有的问题,但我无法解决这个问题,即使在搜索已经打开的几乎所有与此错误有关的问题“Type Any没有下标成员”

谢谢你帮助我

问题 您遇到的问题是,您正在尝试访问对象类型为
Any
下标(当前情况是尝试通过字符串键获取值)

解决方案 arrayPrefs是一个
NSArray
,作为
[Any]
桥接到Swift中。因为这是一个数组,所以您得到的是值arrayPrefs[index],到目前为止,我们还不错。现在,由于数组中元素的类型是
Any
,因此通过键访问它不起作用,因为
Any
没有下标。为了访问下标,首先需要检查元素(
Any
)是否可以键入到
字典(
[String:Any]

要实现它,就要改变

prefToLoad=arrayPrefs[indexPath.row][“url”]as!字符串

问题 您遇到的问题是,您正在尝试访问对象类型为
Any
下标(当前情况是尝试通过字符串键获取值)

解决方案 arrayPrefs是一个
NSArray
,作为
[Any]
桥接到Swift中。因为这是一个数组,所以您得到的是值arrayPrefs[index],到目前为止,我们还不错。现在,由于数组中元素的类型是
Any
,因此通过键访问它不起作用,因为
Any
没有下标。为了访问下标,首先需要检查元素(
Any
)是否可以键入到
字典(
[String:Any]

要实现它,就要改变

prefToLoad=arrayPrefs[indexPath.row][“url”]as!字符串


用错误消息进行简单搜索会得到64个结果:这些结果真的对你没有帮助吗?很难相信请解释它如何对您无效,您尝试了什么,等等。谢谢。在这里添加“arrayPrefs”声明code@EricAya谢谢你无用的评论。正如我所写的,我已经尝试了stackoverflow中的几乎所有结果。总是在括号后加一个“;”这样的错误或最糟糕的错误,没有任何意义。他的评论并非毫无用处。您的问题是无用的,因为无法理解它,无法理解您正在使用的类型以及您从代码中得到的信息。另外,这种风格很糟糕,通过截图发布代码。如果你看类似的问题,你会发现问题总是一样的:你有一个
Any
类型的变量,并且希望它被视为一个数组(或字典、字典数组或数组字典,或…)。所以您必须将其强制转换为:
arrayPrefs作为?一些东西
,然后找出什么东西。如果您没有对整个表达式进行管理,请从一个更简单的表达式开始:
let foo=arrayPrefs[indexPath.row]
,并通过将
arrayPrefs
强制转换为。。。(可能是一个数组?)。一个带有错误消息的简单搜索会得到64个结果:这些结果真的对你没有帮助吗?很难相信请解释它如何对您无效,您尝试了什么,等等。谢谢。在这里添加“arrayPrefs”声明code@EricAya谢谢你无用的评论。正如我所写的,我已经尝试了stackoverflow中的几乎所有结果。总是在括号后加一个“;”这样的错误或最糟糕的错误,没有任何意义。他的评论并非毫无用处。您的问题是无用的,因为无法理解它,无法理解您正在使用的类型以及您从代码中得到的信息。另外,这种风格很糟糕,通过截图发布代码。如果你看类似的问题,你会发现问题总是一样的:你有一个
Any
类型的变量,并且希望它被视为一个数组(或字典、字典数组或数组字典,或…)。所以您必须将其强制转换为:
arrayPrefs作为?一些东西
,然后找出什么东西。如果您没有对整个表达式进行管理,请从一个更简单的表达式开始:
let foo=arrayPrefs[indexPath.row]
,并通过将
arrayPrefs
强制转换为。。。(可能是数组?)。感谢您的解释和可能的解决方案。看起来它在工作!但是我在关于单元格的另一个方法(cell.textlab?.text=arrayPrefs[indexPath.row][“name”]as?String)上复制这个时遇到了问题。。。我应该如何替换另一行?非常感谢
let pref=arrayPrefs[indexPath.row]as![字符串:任意]
单元格.textlab?.text=pref[“name”]as?字符串
太好了,太完美了!感谢您的解释和可能的解决方案。看起来它在工作!但是我在关于单元格的另一个方法(cell.textlab?.text=arrayPrefs[indexPath.row][“name”]as?String)上复制这个时遇到了问题。。。我应该如何替换另一行?非常感谢
let pref=arrayPrefs[indexPath.row]as![字符串:任意]
单元格.textlab?.text=pref[“name”]as?字符串
太好了,太完美了!
if let pref = arrayPrefs[indexPath.row] as? [String: Any] {
    prefToLoad = pref["url"] as! String
    
    // The rest of your code
}