我有以下代码:
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"]
。应该是包含NSDictionary
s 的数组。
有谁能帮我解决这个问题吗? 干杯达安
在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: