我有这行代码,我想提取“标题”键:
var title = jParams["title"] as! String
但是它不会让我编译,如果我得到这个红色的错误信息:
Cannot subscript a value of a type AnyObject with an index of type String
当使用 println(jParams)
在日志中显示 jParams 的内容时,我得到以下内容:
INCOMING LIST PARAMETERS (jParameters)
Optional({
title = "Example List";
values = (
{
id = 1;
name = "Line 1";
},
{
id = 2;
name = "Line 2";
},
{
id = 3;
name = "Line 3";
}
);
})
我是 Swift 的新手,所以我不熟悉处理 JSON 来处理这些类型问题的细节。有什么问题吗?
//jParams comes from a JSON server response
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: nil)
if data != nil {
var jdata = JSON(data: data!)
var jParams=jdata["responseData"]["extraData"]["params"]
最佳答案
在您的编辑中,您似乎正在使用 SwiftyJSON。
如果确实如此,您可以使用 SwiftyJSON 的 dictionaryValue
属性帮助编译器了解字典中的内容:
let jParams = jdata["responseData"]["extraData"]["params"].dictionaryValue
然后你应该能够访问你的值而不用向下转型:
let title = jParams["title"]
因为 SwiftyJSON 会为值推断出正确的类型。
关于json - 无法在 Swift 中下标 AnyObject 类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463216/