首页 > 解决方案 > Swift - 类型 '(String, JSON)' 不能符合 'StringProtocol';只有结构/枚举/类类型可以符合协议

问题描述

我正在使用SwiftyJSON。最终我想看看该"date"值是否等于该值,selectedDate如果是,则打印该"event"值。

但我什至还没有走到那一步。我的if陈述有误。

我收到的错误说Type '(String, JSON)' cannot conform to 'StringProtocol'; only struct/enum/class types can conform to protocols

数据.json

[
 {
      "date": "01.01",
      "event": "Mom birthday",
     
  },
]

ViewController.swift

var json:JSON = false    
var selectedDate:String = "01.01"

func updateView() {
    
    json.forEach { (key, data) in
        if key == "date", data.stringValue == selectedDate {
            print("found it!")
        } else {
            print("no matches")
        }
    }
    
}

覆盖 func viewDidLoad() { super.viewDidLoad()

    // Get JSON data
    if let path = Bundle.main.path(forResource: "Devotions", ofType: "json") {
        do {
            let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .alwaysMapped)
            json = try JSON(data: data)
        } catch let error {
            print("parse error: \(error.localizedDescription)")
        }
    } else {
        print("Invalid filename/path.")
    }
    
    updateView()
    
}

标签: swiftswifty-json

解决方案


您可以修改相关行,例如:

data.forEach { (key, data) in
    if key == "date", data.stringValue == selectedDate {
        print("found it!")
    }
}

或者你可以直接访问like;

data["date"].stringValue == selectedDate

推荐阅读