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 会为值推断出正确的类型。