Swift 中无法为 AnyObject 类型的值下标
Cannot subscript a value of a type AnyObject, in Swift
我有这行代码,我想提取 "title" 键:
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 会为值推断出正确的类型。
我有这行代码,我想提取 "title" 键:
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 会为值推断出正确的类型。