ios - 类型 'String' 不符合协议(protocol) 'NSCopying' 向下转换 AnyObject 到 String 时出错

标签 ios string swift nsdictionary

我正在尝试像这样解析 JSON 格式:

{ 
    "key_1" : {
        "key_2" : "value"
    }

}

然后将“值”赋给一个变量。

这是我的代码:

var variableShouldBeAssigned: String
if let x = (jsonResult["key_1"]? as? NSDictionary) {
    if let y = (x["key_2"]? as? String) {
        variableShouldBeAssigned = y
    }
}

但是,当我尝试从 x["key_2"]? 向下转换为字符串时发生错误,但是从 jsonResult["key_1"]? 向下转换没问题。 code> 到 NSDictionary。

我可以通过使用 x["key_2"] 替换 x["key_2"]? 来解决错误,但我真的不知道为什么它只适用于 jsonResult["key_1"]?

谁能告诉我原因吗?

最佳答案

String 不符合 NSCopying,但 NSString 肯定符合! 此外,从 NSString 到 String 是瞬时暗示的......

所以我会说尝试这样的事情...将 String 更改为 NSString

这是一个示例,假设您将 jsonResult 作为 NSDictionary 来处理...

func giveDictionary(jsonResult:NSDictionary) -> String?
{

    if let x = (jsonResult["key_1"]? as? NSDictionary)
    {
        if let y = (x["key_2"]? as? NSString)
        {
            return y
        }
    }
    return nil
}

关于ios - 类型 'String' 不符合协议(protocol) 'NSCopying' 向下转换 AnyObject 到 String 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24988121/

相关文章:

ios - Swift 中会使用哪种调度方法?

javascript - 使用 JS/jQuery 修改 HTML 中日期/时间文本字符串的值

c++ - 创建一个基于字符串的Class数组

ios - 在 firebase 中使用 Snap 值

ios - CABasicAnimationanimationDidStart确实被调用,但animationDidStop从未被调用

iOS:与sql数据库通信

ios - UIButton 在 vi​​ewDidLoad() 中始终为 nil

ios - UITableView 中的单元格 imageView 在被选中之前不会出现

C++ _TCHAR* 到 std::string

ios - 应用程序在后台 Swift Xcode 时不播放音乐