From c11e08f33d905023e46aca3366b033db7429df0a Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 22 Dec 2022 00:31:49 +0800 Subject: [PATCH] SwiftExtension // Make AppProperty bindable. --- .../Sources/SwiftExtension/SwiftExtension.swift | 2 +- .../SwiftExtension/SwiftUIExtension.swift | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift index 2b06b8d0..8ab1e5c3 100644 --- a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift +++ b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift @@ -115,7 +115,7 @@ extension Bool { } } -// MARK: - Property wrapper +// MARK: - Property Wrapper // Ref: https://www.avanderlee.com/swift/property-wrappers/ diff --git a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift index 7c1d8cf3..d4b3cc85 100644 --- a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift +++ b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftUIExtension.swift @@ -156,3 +156,19 @@ public struct TextEditorEX: NSViewRepresentable { } } } + +// MARK: - Property Wrapper (Bindable Extension) + +extension AppProperty { + @available(macOS 10.15, *) + public var projectedValue: Binding { + .init( + get: { + container.object(forKey: key) as? Value ?? defaultValue + }, + set: { + container.set($0, forKey: key) + } + ) + } +}