From 3b21983b18ef560edea2657323febdd5ff51aff2 Mon Sep 17 00:00:00 2001 From: Javier Cicchelli Date: Tue, 11 Apr 2023 02:02:06 +0200 Subject: [PATCH] Implemented the Dependency property wrapper. --- .../Property Wrappers/Dependency.swift | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Apps/Locations/Libraries/Sources/Dependency/Property Wrappers/Dependency.swift diff --git a/Apps/Locations/Libraries/Sources/Dependency/Property Wrappers/Dependency.swift b/Apps/Locations/Libraries/Sources/Dependency/Property Wrappers/Dependency.swift new file mode 100644 index 0000000..83b9eda --- /dev/null +++ b/Apps/Locations/Libraries/Sources/Dependency/Property Wrappers/Dependency.swift @@ -0,0 +1,31 @@ +// +// Dependency.swift +// Dependency +// +// Created by Javier Cicchelli on 11/04/2023. +// Copyright © 2023 Röck+Cöde. All rights reserved. +// + +/// This property wrapper provides a direct connection to the `DependencyService` service. +@propertyWrapper +public struct Dependency { + + // MARK: Properties + + private let keyPath: WritableKeyPath + + /// This property allows direct read/write access to a defined dependency attached to a selected key path. + public var wrappedValue: D { + get { DependencyService[keyPath] } + set { DependencyService[keyPath] = newValue } + } + + // MARK: Initialisers + + /// Initialise the property wrapper by setting a key path to a defined dependency. + /// - Parameter keyPath: A key path to a defined dependency in the `DependencyService` service. + public init(_ keyPath: WritableKeyPath) { + self.keyPath = keyPath + } + +}