当前位置: 首页 > 面试题库 >

下标xcode 7.1的使用不明确

查宜民
2023-03-14
问题内容

我有以下代码:

var jsonResult = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSDictionary
var count = jsonResult["levels"]!.count as Int
for var i=0; i<count; ++i {
   let obj = jsonResult["levels"]![i] as! NSDictionary
   ...
}

在最后一行,我收到此错误:

下标使用不明确

我该如何解决?

这段代码已经工作了一段时间,但是随着xcode 7.1的升级,它中断了并停止了工作。


问题答案:

您必须告诉编译器该行中的中间对象是什么

let obj = jsonResult["levels"]![i] as! NSDictionary

语句之后jsonResult["levels"]!,编译器不知道他正在处理哪种对象。您必须告诉它是NSArray或其他:

let obj = (jsonResult["levels"] as! NSArray)[i] as! NSDictionary

当然,您还应该确保可以进行所有强制转换,并且json内的对象确实属于预期类型。

通过直接转换为以下数组,仅使用一个转换就可以缩短一点时间NSDictionary

let obj = (jsonResult["levels"] as! [NSDictionary])[i]

推理保持不变:您告诉编译器什么类型jsonResult["levels"]。应该是包含NSDictionarys 的数组。



 类似资料:
  • 有谁能帮我解决这个问题吗? 干杯达安

  • 在PHPCMS V9中我们正式开始需要PC标签做为数据的获取的方式。 PC标签是以下面的方式进行声明 {pc:content action="lists" cache="3600" num="20" page="$page"}{/pc} PC标签必须以{pc}开头,并以{/pc}结尾的代码片段。 当然不以{/pc}结尾并不会引起程序致命性的错误,导致程序无法继续运行。 以下为两种已知可能会出现

  • 我正在调试一个非常大的树着色项目,在该项目中,作者使用glsl文件来着色树,但我在编译glsl文件时遇到了麻烦: 以下是错误日志: 我使用mac osx,Xcode7.0,OpenGL和glut都是默认版本。Glew版本是1.13.0。 这是因为版本与作者使用的原始版本不匹配吗?因为我检查了原始版本,所以他使用了GLEW 1.9.0和GLUT 3.7.6。 //////更新/////// 原来ma

  • 我想使用try with resource来切换上下文,但try()似乎无法在不声明变量的情况下使用资源,这使得代码不那么优雅。例如 和用法: 但是我在try()上得到了Syntext错误。只有当我这样写的时候:它通过编译。最优雅的方法是什么? 最新消息 因为在一些答案中,人们不明白我想做什么,所以我会尝试更好地解释。我试图以一种更优雅的方式实现以下逻辑:

  • 修改过程后,仍然返回错误#1324-未定义的游标:getid。我如何解决这个问题?

  • 任务“:app:ExternalNativeBuildDebug”执行失败。生成命令失败。执行进程/home/raed/android/sdk/cmake/3.10.2.4988404/bin/ninja时出错,参数为{-c/home/raed/androidstudioprojects/simd/app/.CXX/cmake/debug/armeabi-v7a native-lib}ninja: