Supports non-NSManagedObjects for @Managed properties

This allows us to use @Managed with properties that may or may not be NSManagedObjects at runtime (e.g. protocols). If they are, Managed will keep strong reference to context like before.
This commit is contained in:
Riley Testut
2022-11-15 16:50:12 -06:00
committed by Magesh K
parent 9217044b1d
commit 9d5248e2e8

View File

@@ -11,12 +11,15 @@ import CoreData
@propertyWrapper @dynamicMemberLookup
struct Managed<ManagedObject>
struct Managed<ManagedObject>
{
var wrappedValue: ManagedObject {
didSet {
self.managedObjectContext = self.managedObject?.managedObjectContext
self.managedObjectContext = self.managedObject?.managedObjectContext
}
}
var projectedValue: Managed<ManagedObject> {
return self
@@ -31,6 +34,7 @@ struct Managed<ManagedObject>
{
self.wrappedValue = wrappedValue
self.managedObjectContext = self.managedObject?.managedObjectContext
self.managedObjectContext = self.managedObject?.managedObjectContext
}
subscript<T>(dynamicMember keyPath: KeyPath<ManagedObject, T>) -> T