json - 无法在 Swift 中下标 AnyObject 类型的值

标签 json swift nsdictionary

我有这行代码,我想提取“标题”键:

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/

相关文章:

java - 如何用 Jackson 解析嵌套数组?

javascript - 使用循环删除 JSON 中的重复值

JavaScript 对象字面量符号混淆

iphone - writeToFile 正在覆盖以前的数据

ios - 按键将 NSArray 分成排序的组

javascript - 如何从函数本身外部的 ajax 调用访问数据

swift 4 : struct in struct

Swift:如何调用调用随机函数的函数?

ios - 根据单独的数组对字典数组进行排序?

ios - 使用 CTCallCenter (Swift) 在 iOS 上检测电话