web-dev-qa-db-ja.com

オプションのチェックで使用されるタイプ「AnyObject」の非オプション式

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」の非オプション式」という警告が表示されます

この問題を解決するにはどうすればよいですか?

9
Faisal Syed

コードから警告の原因となる行を削除し、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
    }
}
2
choofie

すでにアンラップされたものをアンラップしています。これを見てください stackoverflow post