MetaCodable — расширение возможностей реализации Codable
в Swift с помощью макросов. Фреймворк предоставляет пользовательские макросы, которые могут быть использованы для генерации динамических реализаций Codable. Ядром фреймворка является макрос Codable(), который генерирует реализацию на основе данных, предоставляемых с помощью других макросов.
MetaCodable нацелен на повышение эффективности ваших реализаций Codable, предоставляя следующие возможности:
- Позволяет объявлять пользовательские значения
CodingKey
для каждой переменной, вместо того чтобы писать все значенияCodingKey
с помощьюCodedAt(_:)
, передавая один аргумент. - Позволяет создавать плоскую модель для вложенных значений
CodingKey
сCodedAt(_:)
иCodedIn(_:)
. - Позволяет создавать композицию из нескольких типов
Codable
с помощьюCodedAt(_:)
, не передавая никаких аргументов. - Позволяет предоставлять значение по умолчанию в случае сбоев декодирования с помощью
Default(_:)
. - Позволяет создавать пользовательские стратегии декодирования/кодирования с помощью
HelperCoder
и использовать их с помощьюCodedBy(_:)
, т.е.LossySequenceCoder
и т.д. - Позволяет игнорировать определенные свойства при декодировании/кодировании с помощью
IgnoreCoding()
,IgnoreDecoding()
и@IgnoreEncoding()
. - Позволяет игнорировать все инициализированные свойства типа при декодировании/кодировании с помощью функции
IgnoreCodingInitialized()
, если они явно не запрошены для декодирования/кодирования путем добавления каких-либо атрибутов кодирования, т.е.CodedIn(_:)
,CodedAt(_:)
,CodedBy(_:)
,Default(_:)
и т.д.