#полезное
🤓
Power of Swift Macros
Макросы в Swift достаточно удобная штука, если их правильно применять
Например, они позволяют автоматизировать создание представлений SwiftUI для UIKit, упрощая процесс написания повторяющегося кода.
🟠 Для создания макроса необходимо инициализировать новый Swift пакет с помощью команды
swift package init --type macro --name RepresentableMacros
🟠 Основной код макроса включает в себя извлечение метаданных из объявления класса и создание структуры SwiftUI, которая реализует протокол
UIViewRepresentable.
🟠 Тестирование макроса включает проверку различных случаев, таких как наличие модификаторов и правильность обработки классов, не являющихся представлениями UIKit.
import SwiftCompilerPlugin
import SwiftSyntax
import SwiftSyntaxBuilder
import SwiftSyntaxMacros
public enum ViewRepresentableError: CustomStringConvertible, Error {
case onlyApplicableToView
public var description: String {
switch self {
case .onlyApplicableToView:
"@ViewRepresentable is only applicable to UIKit View."
}
}
}
public struct ViewRepresentable: PeerMacro {
public static func expansion(
of node: AttributeSyntax,
providingPeersOf declaration: some DeclSyntaxProtocol,
in context: some MacroExpansionContext
) throws -> [DeclSyntax] {
// here will be our magic code
return []
}
}
👉
Новости 👉
База вопросов