forked from shadowfacts/Tusker
Remove incorrect workaround for crash when LazilyDecoding used on nil MO
This commit is contained in:
parent
be1ca70ebf
commit
108a02826f
|
@ -33,7 +33,6 @@ public struct LazilyDecoding<Enclosing: NSManagedObject, Value: Codable> {
|
||||||
|
|
||||||
public static subscript(_enclosingInstance instance: Enclosing, wrapped wrappedKeyPath: ReferenceWritableKeyPath<Enclosing, Value>, storage storageKeyPath: ReferenceWritableKeyPath<Enclosing, Self>) -> Value {
|
public static subscript(_enclosingInstance instance: Enclosing, wrapped wrappedKeyPath: ReferenceWritableKeyPath<Enclosing, Value>, storage storageKeyPath: ReferenceWritableKeyPath<Enclosing, Self>) -> Value {
|
||||||
get {
|
get {
|
||||||
instance.performOnContext {
|
|
||||||
var wrapper = instance[keyPath: storageKeyPath]
|
var wrapper = instance[keyPath: storageKeyPath]
|
||||||
if let value = wrapper.value {
|
if let value = wrapper.value {
|
||||||
return value
|
return value
|
||||||
|
@ -58,9 +57,7 @@ public struct LazilyDecoding<Enclosing: NSManagedObject, Value: Codable> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
set {
|
set {
|
||||||
instance.performOnContext {
|
|
||||||
var wrapper = instance[keyPath: storageKeyPath]
|
var wrapper = instance[keyPath: storageKeyPath]
|
||||||
wrapper.value = newValue
|
wrapper.value = newValue
|
||||||
wrapper.skipClearingOnNextUpdate = true
|
wrapper.skipClearingOnNextUpdate = true
|
||||||
|
@ -69,7 +66,6 @@ public struct LazilyDecoding<Enclosing: NSManagedObject, Value: Codable> {
|
||||||
instance[keyPath: wrapper.keyPath] = newData
|
instance[keyPath: wrapper.keyPath] = newData
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
mutating func removeCachedValue() {
|
mutating func removeCachedValue() {
|
||||||
value = nil
|
value = nil
|
||||||
|
@ -78,16 +74,6 @@ public struct LazilyDecoding<Enclosing: NSManagedObject, Value: Codable> {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension NSManagedObject {
|
|
||||||
fileprivate func performOnContext<V>(_ f: () -> V) -> V {
|
|
||||||
if let managedObjectContext {
|
|
||||||
managedObjectContext.performAndWait(f)
|
|
||||||
} else {
|
|
||||||
f()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extension LazilyDecoding {
|
extension LazilyDecoding {
|
||||||
init<T>(arrayFrom keyPath: ReferenceWritableKeyPath<Enclosing, Data?>) where Value == [T] {
|
init<T>(arrayFrom keyPath: ReferenceWritableKeyPath<Enclosing, Data?>) where Value == [T] {
|
||||||
self.init(from: keyPath, fallback: [])
|
self.init(from: keyPath, fallback: [])
|
||||||
|
|
Loading…
Reference in New Issue