检查选项时使用的“AnyObject”类型的非可选表达式

时间:2016-09-30 20:18:45

标签: ios swift dictionary anyobject

我在'Dictionary'上创建了一个扩展来帮助我解析JSON。下面的方法可以帮助我做到这一点:

func toJSONString() -> String? {
    if let dict = self as? AnyObject {
        if let data = try? JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions(rawValue: 0)) {
            if let json = String(data: data, encoding: String.Encoding.utf8) {
                return json
            }
        }
    }
    return nil
}

问题出现在这一行:

if let dict = self as? AnyObject {

我收到警告说“检查选项时使用的'AnyObject'类型的非可选表达式”

如何解决此问题?

2 个答案:

答案 0 :(得分:2)

只需从代码中删除导致警告的行,然后按self函数传递JSONSerialization。这应该没有任何问题:

extension Dictionary {

    func toJSONString() -> String? {
        if let data = try? JSONSerialization.data(withJSONObject: self, options: JSONSerialization.WritingOptions(rawValue: 0)) {
            if let json = String(data: data, encoding: String.Encoding.utf8) {
                return json
            }
        }

        return nil
    }
}

答案 1 :(得分:1)

你正在打开尚未打开的东西。看一下这个stackoverflow post