二元运算符“==”不能应用于“Any?”类型的操作数 和“字符串”Swift iOS

F.D*_*Duh 2 json binary-operators ios swift

我有这个var json : [[String : Any]] = [[:]]包含 JSON 响应如下:

{
"id": "1",
"name": "Apple",
"category_name": "Fruits"
},
{
"id": "2",
"name": "Black shirt",
"category_name": "Fashion"
},
{
"id": "3",
"name": "iPad",
"category_name": "Gadgets"
}
Run Code Online (Sandbox Code Playgroud)

我写了一个枚举:

enum : Int {
        case fruits = 0, fashion, gadgets
    }

var data = [Categories: [[String: Any]]]()
Run Code Online (Sandbox Code Playgroud)

然后我有这个方法来对类别进行排序:

func sortData() {
        data[.fruits] = self.json.filter({ $0["category_name"] == "Fruits" })
        data[.fashion] = self.json.filter({ $0["category_name"] == "Fashion" })
        data[.gadgets] = self.json.filter({ $0["category_name"] == "Gadgets" })
    }
Run Code Online (Sandbox Code Playgroud)

之后我收到这样的错误

二元运算符“ ==”不能应用于“ Any?”和“ String”类型的操作数

请告诉我如何解决这个问题?

Tam*_*gel 5

您应该安全地将左侧的值转换为String,如下所示:

data[.fruits] = self.json.filter({ ($0["category_name"] as? String) == "Fruits" })
Run Code Online (Sandbox Code Playgroud)