#swift #objective-c #nsobject #nskeyvaluecoding
Вопрос:
Я пытался использовать кодирование значений ключей на основе отражения, чтобы мой код был гибким и динамичным, но я столкнулся с неожиданной проблемой, пытаясь получить и установить определенные свойства.
Возникает ошибка «этот класс не соответствует кодированию значения ключа для ключа [одного из многих ключей]». Класс релевантности следующий:
class Vote: NSObject amp; Codable {
var id: String
var userIdentifier: String
var dateTimes: Set<Date>?
var candidates: Set<String>?
var filters: Set<String>?
var locations: Set<String>?
var moods: Set<String>?
var prices: Set<Int>?
var restrictions: Set<String>?
enum CodingKeys: String, CodingKey {
case id = "voteId"
case userIdentifier = "userIdentifier"
case candidates = "candidates"
case dateTimes = "dateTimes"
case filters = "filters"
case locations = "locations"
case moods = "moods"
case prices = "prices"
case restrictions = "restrictions"
}
...
и строка, которая генерирует ошибку, является:
someVoteInstance.value(forKey: "restrictions")
Как правильно использовать значение и значение setValue, чтобы мой класс был одновременно кодируемым и удобным для функций NSObject?