- Tino アプリで利用するマクロ定義
@Equatableを付与することで、オブジェクトを Equatable に適合させます@SkipEquatableをプロパティに付与することで比較条件から対象を除外することができます- SwiftUI.View の body は比較されません
✅ 利用方法
@Equatable
struct User {
let name: String
let age: Int
@SkipEquatable var loggedIn: () -> Bool
init(name: String, age: Int, loggedIn: @escaping () -> Bool) {
self.name = name
self.age = age
self.loggedIn = loggedIn
}
}
let userName = "John"
let age = 30
let loggedIn = User(name: userName, age: age) { true }
let loggedOut = User(name: userName, age: age) { false }
let copy = loggedIn
// クロージャは比較されずに、true になるはず
print(loggedIn == copy)
print(loggedIn == loggedOut)- String Catalog を扱いやすくするためのマクロです
#L10nを利用してビルドすることで、Localized.xcstringsに Key & Value を生成しますBundleはデフォルトが.module、必要に応じて.mainに切り替えてください
✅ 利用方法
static let title = #L10n("home.title", defaultValue: "ホーム")
// 以下が生成されます
static let title = String(
localized: "home.title",
defaultValue: String.LocalizationValue("ホーム"),
bundle: .module
)