setValue: forKey всегда быстро дает сбой - PullRequest
0 голосов
/ 09 мая 2020

Ниже приведен пример использования:

class Foo: NSObject {
    var bar = ""
}

let foo = Foo()
foo.setValue("A name", forKey: "bar") //throws exception: this class is not key value coding-compliant for the key bar.
print("Foo.bar: \(foo.bar)")

В документации Apple ( здесь ) говорится, что в Swift каждый подкласс NSObject класса становится по умолчанию совместимым со значением ключа. Если да, то почему я получаю исключение, не соответствующее ключевому значению?

Объекты Swift, наследуемые от NSObject или одного из его подклассов, по умолчанию соответствуют кодированию значений ключа для своих свойств.

Я что-то упускаю? Знает ли кто-нибудь, в чем может быть проблема?

Примечание: я попытался сделать свойство «bar» NSString, но получил то же исключение.

1 Ответ

2 голосов
/ 09 мая 2020

Для реализации поддержки KV C (Key-Value Coding) для свойства. вам нужна аннотация @ obj c на вашем объекте, поскольку текущая реализация KV C записана в Objective- C, после добавления @ obj c , Объектив - c может это видеть.

class Foo: NSObject {
    @objc var bar = ""
}
let foo = Foo()
foo.setValue("A name", forKey: "bar")
print("Foo.bar: \(foo.bar)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...