From ef4186d9844e794173f28571d91689a3a77ba4d5 Mon Sep 17 00:00:00 2001 From: Jason Flax Date: Thu, 16 Feb 2023 10:24:27 -0500 Subject: [PATCH 1/2] Add keyPath initializer for Persisted --- RealmSwift/PersistedProperty.swift | 3 +++ RealmSwift/Tests/ModernTestObjects.swift | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/RealmSwift/PersistedProperty.swift b/RealmSwift/PersistedProperty.swift index d094fff055..f623704f05 100644 --- a/RealmSwift/PersistedProperty.swift +++ b/RealmSwift/PersistedProperty.swift @@ -361,6 +361,9 @@ extension Persisted where Value: LinkingObjectsProtocol { public init(originProperty: String) { self.init(wrappedValue: Value(fromType: Value.Element.self, property: originProperty)) } + public init(originProperty: KeyPath) where Value.Element: ObjectBase { + self.init(wrappedValue: Value(fromType: Value.Element.self, property: _name(for: originProperty))) + } } extension LinkingObjects: LinkingObjectsProtocol {} diff --git a/RealmSwift/Tests/ModernTestObjects.swift b/RealmSwift/Tests/ModernTestObjects.swift index b2729c5802..7407cbf0ba 100644 --- a/RealmSwift/Tests/ModernTestObjects.swift +++ b/RealmSwift/Tests/ModernTestObjects.swift @@ -156,7 +156,7 @@ class ModernAllTypesObject: Object { @Persisted var mapOptObjectId: Map @Persisted var mapOptUuid: Map - @Persisted(originProperty: "objectCol") + @Persisted(originProperty: \.objectCol) var linkingObjects: LinkingObjects } From eb420a0bce300127d370a27415a1164590c62412 Mon Sep 17 00:00:00 2001 From: Jason Flax Date: Thu, 16 Feb 2023 13:35:59 -0500 Subject: [PATCH 2/2] Specialize originProperty initializer for Links only; Update CHANGELOG --- CHANGELOG.md | 3 ++- RealmSwift/PersistedProperty.swift | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44e500bd88..4fccc5ceb7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ x.y.z Release notes (yyyy-MM-dd) ============================================================= ### Enhancements -* None. +* Add support for KeyPath initializiation for LinkingObjects declared with @Persisted: + `@Persisted(originProperty: \.dogs) var persons: LinkingObjects ### Fixed * ([#????](https://github.com/realm/realm-swift/issues/????), since v?.?.?) diff --git a/RealmSwift/PersistedProperty.swift b/RealmSwift/PersistedProperty.swift index f623704f05..bb41855886 100644 --- a/RealmSwift/PersistedProperty.swift +++ b/RealmSwift/PersistedProperty.swift @@ -361,7 +361,7 @@ extension Persisted where Value: LinkingObjectsProtocol { public init(originProperty: String) { self.init(wrappedValue: Value(fromType: Value.Element.self, property: originProperty)) } - public init(originProperty: KeyPath) where Value.Element: ObjectBase { + public init(originProperty: KeyPath) where Value.Element: ObjectBase, V: ObjectBase { self.init(wrappedValue: Value(fromType: Value.Element.self, property: _name(for: originProperty))) } }