mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-20 04:03:26 +01:00
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:
@@ -11,13 +11,16 @@ import CoreData
|
|||||||
|
|
||||||
@propertyWrapper @dynamicMemberLookup
|
@propertyWrapper @dynamicMemberLookup
|
||||||
struct Managed<ManagedObject>
|
struct Managed<ManagedObject>
|
||||||
|
struct Managed<ManagedObject>
|
||||||
{
|
{
|
||||||
var wrappedValue: ManagedObject {
|
var wrappedValue: ManagedObject {
|
||||||
didSet {
|
didSet {
|
||||||
self.managedObjectContext = self.managedObject?.managedObjectContext
|
self.managedObjectContext = self.managedObject?.managedObjectContext
|
||||||
|
self.managedObjectContext = self.managedObject?.managedObjectContext
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var projectedValue: Managed<ManagedObject> {
|
var projectedValue: Managed<ManagedObject> {
|
||||||
return self
|
return self
|
||||||
}
|
}
|
||||||
@@ -31,6 +34,7 @@ struct Managed<ManagedObject>
|
|||||||
{
|
{
|
||||||
self.wrappedValue = wrappedValue
|
self.wrappedValue = wrappedValue
|
||||||
self.managedObjectContext = self.managedObject?.managedObjectContext
|
self.managedObjectContext = self.managedObject?.managedObjectContext
|
||||||
|
self.managedObjectContext = self.managedObject?.managedObjectContext
|
||||||
}
|
}
|
||||||
|
|
||||||
subscript<T>(dynamicMember keyPath: KeyPath<ManagedObject, T>) -> T
|
subscript<T>(dynamicMember keyPath: KeyPath<ManagedObject, T>) -> T
|
||||||
|
|||||||
Reference in New Issue
Block a user