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 0aa3b05167
commit 03b5ee840a

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