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) + } + ) + } +}