Класс не соответствует кодированию значения ключа для ключа; Переменная как набор

#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?