NSSecureCoding, как переопределить требуемый supportSecureCoding в подклассе ⇐ IOS
NSSecureCoding, как переопределить требуемый supportSecureCoding в подклассе
Я пытаюсь устранить эту ошибку выполнения в проекте iOS с помощью Swift 5
Класс должен реализовать +supportsSecureCoding и вернуть YES, чтобы убедиться, что его реализация -initWithCoder: совместима с безопасным кодированием». UserInfo={NSDebugDescription=Class 'Divinstructor.ResultDE' имеет суперкласс, который поддерживает безопасное кодирование, но 'Divinstructor. ResultDE' переопределяет -initWithCoder: и не переопределяет +supportsSecureCoding. Класс должен реализовать +supportsSecureCoding и вернуть YES, чтобы убедиться, что его реализация -initWithCoder: совместима с безопасным кодированием.
Однако я не нашел способа преодолеть эту ошибку, поскольку попытка следовать инструкциям по ошибке приводит к ошибке компиляции, которую мне до сих пор не удалось устранить.
Я обновляю свое приложение до NSSecureCoding. NSKeyedUnarchiver.unarchiveObject(with:) устарел, начиная с iOS12, и его необходимо заменить на NSKeyedUnarchiver.unarchivedObject(ofClass: ,from: ), что действительно приводит к необходимости перехода от NSCoding к NSSecureCoding.
Это работает для моего основного класса (Result), который я модифицирую, чтобы он соответствовал NSSecureCoding. Одним из необходимых вещей является добавление класса, соответствующего NSSecureCoding
статическая переменная supportSecureCoding: Bool = true Однако во время выполнения я столкнулся с проблемой (см. выше) для класса (ResultDE), который наследуется от моего класса (Result).
В сообщении об ошибке говорится, что «ResultDE» имеет суперкласс, который поддерживает безопасное кодирование, но «Divinstructor.ResultDE» переопределяет -initWithCoder: и не переопределяет +supportsSecureCoding».
Однако я пробовал множество вариантов переопределения supportSecureCoding, но безуспешно.
переопределить public static var supportSecureCoding: Bool= true Очевидное выше также приводит к ошибке компиляции «Невозможно переопределить с помощью сохраненного свойства supportSecureCoding» Все мои попытки приводят к ошибке компиляции. «Невозможно переопределить сохраненное свойство supportSecureCoding»
Есть ли у кого-нибудь идея, как переопределить supportSecureCoding в подклассе?
Я попытался удалить статическую информацию для supportSecureCoding в классе man (что сделало ее несоответствующей протоколу), но у меня по-прежнему возникает ошибка компиляции «Невозможно переопределить с помощью сохраненного свойства supportSecureCoding».
вот короткий код, воспроизводящий ошибку компиляции
импортный фонд Результат класса: NSObject, NSSecureCoding { статическая переменная supportSecureCoding: Bool = true имя переменной: String = "-" переопределить инициализацию() { супер.инит() } требуется init (кодер-декодер: NSCoder) { супер.инит() name = decoder.decodeObject(forKey: «имя») как! Нить } кодирование функции (с кодером: NSCoder) { coder.encode(имя, forKey: "имя") } класс ResultDE: Результат { переопределить статическую переменную supportSecureCoding: Bool = true требуется init (кодер-декодер: NSCoder) { супер.инит() name = decoder.decodeObject(forKey: «имя») как! Нить } переопределить кодировку функции (с кодером: NSCoder) { coder.encode(имя, forKey: "имя") } } }
Я пытаюсь устранить эту ошибку выполнения в проекте iOS с помощью Swift 5
Класс должен реализовать +supportsSecureCoding и вернуть YES, чтобы убедиться, что его реализация -initWithCoder: совместима с безопасным кодированием». UserInfo={NSDebugDescription=Class 'Divinstructor.ResultDE' имеет суперкласс, который поддерживает безопасное кодирование, но 'Divinstructor. ResultDE' переопределяет -initWithCoder: и не переопределяет +supportsSecureCoding. Класс должен реализовать +supportsSecureCoding и вернуть YES, чтобы убедиться, что его реализация -initWithCoder: совместима с безопасным кодированием.
Однако я не нашел способа преодолеть эту ошибку, поскольку попытка следовать инструкциям по ошибке приводит к ошибке компиляции, которую мне до сих пор не удалось устранить.
Я обновляю свое приложение до NSSecureCoding. NSKeyedUnarchiver.unarchiveObject(with:) устарел, начиная с iOS12, и его необходимо заменить на NSKeyedUnarchiver.unarchivedObject(ofClass: ,from: ), что действительно приводит к необходимости перехода от NSCoding к NSSecureCoding.
Это работает для моего основного класса (Result), который я модифицирую, чтобы он соответствовал NSSecureCoding. Одним из необходимых вещей является добавление класса, соответствующего NSSecureCoding
статическая переменная supportSecureCoding: Bool = true Однако во время выполнения я столкнулся с проблемой (см. выше) для класса (ResultDE), который наследуется от моего класса (Result).
В сообщении об ошибке говорится, что «ResultDE» имеет суперкласс, который поддерживает безопасное кодирование, но «Divinstructor.ResultDE» переопределяет -initWithCoder: и не переопределяет +supportsSecureCoding».
Однако я пробовал множество вариантов переопределения supportSecureCoding, но безуспешно.
переопределить public static var supportSecureCoding: Bool= true Очевидное выше также приводит к ошибке компиляции «Невозможно переопределить с помощью сохраненного свойства supportSecureCoding» Все мои попытки приводят к ошибке компиляции. «Невозможно переопределить сохраненное свойство supportSecureCoding»
Есть ли у кого-нибудь идея, как переопределить supportSecureCoding в подклассе?
Я попытался удалить статическую информацию для supportSecureCoding в классе man (что сделало ее несоответствующей протоколу), но у меня по-прежнему возникает ошибка компиляции «Невозможно переопределить с помощью сохраненного свойства supportSecureCoding».
вот короткий код, воспроизводящий ошибку компиляции
импортный фонд Результат класса: NSObject, NSSecureCoding { статическая переменная supportSecureCoding: Bool = true имя переменной: String = "-" переопределить инициализацию() { супер.инит() } требуется init (кодер-декодер: NSCoder) { супер.инит() name = decoder.decodeObject(forKey: «имя») как! Нить } кодирование функции (с кодером: NSCoder) { coder.encode(имя, forKey: "имя") } класс ResultDE: Результат { переопределить статическую переменную supportSecureCoding: Bool = true требуется init (кодер-декодер: NSCoder) { супер.инит() name = decoder.decodeObject(forKey: «имя») как! Нить } переопределить кодировку функции (с кодером: NSCoder) { coder.encode(имя, forKey: "имя") } } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Позволяет ли полиморфизм переопределить все методы своего суперкласса в подклассе?
Anonymous » » в форуме JAVA - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-