{Тип «Self» не соответствует протоколу «Decodable»} или {для «DefaultsKeyedArchiverBridge» требуется, чтобы «Self» соотвIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 {Тип «Self» не соответствует протоколу «Decodable»} или {для «DefaultsKeyedArchiverBridge» требуется, чтобы «Self» соотв

Сообщение Гость »

Заголовок: Ошибка Swift: Тип «Self» не соответствует протоколу «Decodable» в расширении SwiftyUserDefaults.
Тело:
Привет, сообщество Swift!
Во время работы над проектом Swift я столкнулся с проблемой, связанной с использованием библиотеки SwiftyUserDefaults. Я относительно новичок в разработке Swift и был бы признателен за рекомендации по устранению этой ошибки.
Контекст:
Я создаю приложение для iOS с использованием Swift и использую SwiftyUserDefaults для управления пользователями. по умолчанию. Я следовал документации и интегрировал SwiftyUserDefaults в свой проект, но столкнулся с ошибкой, связанной с соответствием протоколу.
Проблема:
При попытке использовать SwiftyUserDefaults для определения значения по умолчанию значения для определенных типов (например, Date, String, Int и т. д.), я получаю следующие сообщения об ошибках:
"Тип "Self" не соответствует протоколу "Decodable" "
"'DefaultKeyedArchiverBridge' требует, чтобы 'Self' соответствовало 'Decodable'"
Что я пробовал:
Я просмотрел документацию Swift по протоколам и Codable, но я все еще пытаюсь понять, как решить эту проблему. Я также искал в Интернете подобные проблемы, но не нашел решения, применимого к моему конкретному сценарию.
Фрагменты кода:
Вот отрывок из моего расширения SwiftyUserDefaults, где возникает ошибка:

Код: Выделить всё

import Foundation

extension DefaultsSerializable {
public static var _defaultsArray: DefaultsArrayBridge { return DefaultsArrayBridge() }
}
extension Date: DefaultsSerializable {
public static var _defaults: DefaultsObjectBridge { return DefaultsObjectBridge() }
}
extension String: DefaultsSerializable {
public static var _defaults: DefaultsStringBridge { return DefaultsStringBridge() }
}
extension Int: DefaultsSerializable {
public static var _defaults: DefaultsIntBridge { return DefaultsIntBridge() }
}
extension Double: DefaultsSerializable {
public static var _defaults: DefaultsDoubleBridge { return DefaultsDoubleBridge() }
}
extension Bool: DefaultsSerializable {
public static var _defaults: DefaultsBoolBridge { return DefaultsBoolBridge() }
}
extension Data: DefaultsSerializable {
public static var _defaults: DefaultsDataBridge { return DefaultsDataBridge() }
}

extension URL: DefaultsSerializable {
#if os(Linux)
public static var _defaults: DefaultsKeyedArchiverBridge { return DefaultsKeyedArchiverBridge() }
#else
public static var _defaults: DefaultsUrlBridge { return DefaultsUrlBridge() }
#endif
public static var _defaultsArray: DefaultsKeyedArchiverBridge { return DefaultsKeyedArchiverBridge() }
}

extension DefaultsSerializable where Self: Codable {
public static var _defaults: DefaultsCodableBridge { return DefaultsCodableBridge() }
public static var _defaultsArray: DefaultsCodableBridge { return DefaultsCodableBridge() }
}

extension DefaultsSerializable where Self: RawRepresentable {
public static var _defaults: DefaultsRawRepresentableBridge { return DefaultsRawRepresentableBridge() }
public static var _defaultsArray: DefaultsRawRepresentableArrayBridge { return DefaultsRawRepresentableArrayBridge() }
}

extension DefaultsSerializable where Self: NSCoding {
public static var _defaults: DefaultsKeyedArchiverBridge { return DefaultsKeyedArchiverBridge() }
public static var _defaultsArray: DefaultsKeyedArchiverBridge { return DefaultsKeyedArchiverBridge() }
}

extension Dictionary: DefaultsSerializable where Key == String {
public typealias T = [Key: Value]
public typealias Bridge = DefaultsObjectBridge
public typealias ArrayBridge = DefaultsArrayBridge
public static var _defaults: Bridge { return Bridge() }
public static var _defaultsArray: ArrayBridge { return ArrayBridge() }
}
extension Array: DefaultsSerializable where Element: DefaultsSerializable {
public typealias T = [Element.T]
public typealias Bridge = Element.ArrayBridge
public typealias ArrayBridge = DefaultsObjectBridge
public static var _defaults: Bridge {
return Element._defaultsArray
}
public static var _defaultsArray: ArrayBridge {
fatalError("Multidimensional arrays are not supported yet")
}
}

extension Optional: DefaultsSerializable where Wrapped: DefaultsSerializable {
public typealias Bridge = DefaultsOptionalBridge
public typealias ArrayBridge = DefaultsOptionalBridge

public static var _defaults: DefaultsOptionalBridge { return DefaultsOptionalBridge(bridge: Wrapped._defaults) }
public static var _defaultsArray: DefaultsOptionalBridge { return DefaultsOptionalBridge(bridge: Wrapped._defaultsArray) }
}

Вопрос:
Может кто-нибудь объяснить, почему я сталкиваюсь с этими ошибками и как их устранить? Кроме того, я открыт для альтернативных предложений по управлению пользовательскими настройками по умолчанию, если SwiftyUserDefaults не является лучшим решением для моего варианта использования.
Теги: Swift, ios, Swiftyuserdefaults, декодируемый, соответствие протоколу
Заранее благодарим вас за любую помощь или информацию, которую вы можете предоставить!

Подробнее здесь: https://stackoverflow.com/questions/781 ... yedarchive
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Избегание Y-полосы прокрутки на высоте: 100vh; соотв. h-экран;
    Гость » » в форуме CSS
    0 Ответы
    59 Просмотры
    Последнее сообщение Гость
  • Тип «MyWeather» не соответствует протоколу «Кодируемая» ошибка
    Anonymous » » в форуме IOS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Socket.io: тип 'ocketengine' не соответствует протоколу "webSocketDelegate '
    Anonymous » » в форуме IOS
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Ios Swift – API GoogleMaps – не соответствует протоколу GSMAutocompleteViewControllerDelegate
    Anonymous » » в форуме IOS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Url_launcher ^6.3.1 UIApplication не соответствует протоколу «Launcher»
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»