mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-01-17 14:37:11 +01:00
safer casting
This commit is contained in:
@@ -133,11 +133,11 @@ public struct ObjectProxy<O: CoreStoreObject> {
|
||||
let keyPathString = field.keyPath
|
||||
self.getValue = {
|
||||
|
||||
return FieldContainer<OBase>.Stored<V>.read(field: field, for: rawObject) as! V
|
||||
return type(of: field).read(field: field, for: rawObject) as! V
|
||||
}
|
||||
self.setValue = {
|
||||
|
||||
FieldContainer<OBase>.Stored<V>.modify(field: field, for: rawObject, newValue: $0)
|
||||
type(of: field).modify(field: field, for: rawObject, newValue: $0)
|
||||
}
|
||||
self.getPrimitiveValue = {
|
||||
|
||||
@@ -159,11 +159,11 @@ public struct ObjectProxy<O: CoreStoreObject> {
|
||||
let keyPathString = field.keyPath
|
||||
self.getValue = {
|
||||
|
||||
return FieldContainer<OBase>.Virtual<V>.read(field: field, for: rawObject) as! V
|
||||
return type(of: field).read(field: field, for: rawObject) as! V
|
||||
}
|
||||
self.setValue = {
|
||||
|
||||
FieldContainer<OBase>.Virtual<V>.modify(field: field, for: rawObject, newValue: $0)
|
||||
type(of: field).modify(field: field, for: rawObject, newValue: $0)
|
||||
}
|
||||
self.getPrimitiveValue = {
|
||||
|
||||
@@ -192,11 +192,11 @@ public struct ObjectProxy<O: CoreStoreObject> {
|
||||
let keyPathString = field.keyPath
|
||||
self.getValue = {
|
||||
|
||||
return FieldContainer<OBase>.Coded<V>.read(field: field, for: rawObject) as! V
|
||||
return type(of: field).read(field: field, for: rawObject) as! V
|
||||
}
|
||||
self.setValue = {
|
||||
|
||||
FieldContainer<OBase>.Coded<V>.modify(field: field, for: rawObject, newValue: $0)
|
||||
type(of: field).modify(field: field, for: rawObject, newValue: $0)
|
||||
}
|
||||
self.getPrimitiveValue = {
|
||||
|
||||
|
||||
@@ -379,7 +379,8 @@ extension ObjectPublisher where O: CoreStoreObject {
|
||||
|
||||
return nil
|
||||
}
|
||||
return FieldContainer<OBase>.Stored<V>.read(field: object[keyPath: member], for: rawObject) as! V?
|
||||
let field = object[keyPath: member]
|
||||
return type(of: field).read(field: field, for: rawObject) as! V?
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -394,7 +395,8 @@ extension ObjectPublisher where O: CoreStoreObject {
|
||||
|
||||
return nil
|
||||
}
|
||||
return FieldContainer<OBase>.Virtual<V>.read(field: object[keyPath: member], for: rawObject) as! V?
|
||||
let field = object[keyPath: member]
|
||||
return type(of: field).read(field: field, for: rawObject) as! V?
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -409,7 +411,8 @@ extension ObjectPublisher where O: CoreStoreObject {
|
||||
|
||||
return nil
|
||||
}
|
||||
return FieldContainer<OBase>.Coded<V>.read(field: object[keyPath: member], for: rawObject) as! V?
|
||||
let field = object[keyPath: member]
|
||||
return type(of: field).read(field: field, for: rawObject) as! V?
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -419,12 +422,16 @@ extension ObjectPublisher where O: CoreStoreObject {
|
||||
|
||||
guard
|
||||
let object = self.object,
|
||||
let rawObject = object.rawObject,
|
||||
let value = FieldContainer<OBase>.Relationship<V>.read(field: object[keyPath: member], for: rawObject) as! V?
|
||||
let rawObject = object.rawObject
|
||||
else {
|
||||
|
||||
return nil
|
||||
}
|
||||
let field = object[keyPath: member]
|
||||
guard let value = type(of: field).read(field: field, for: rawObject) as! V? else {
|
||||
|
||||
return nil
|
||||
}
|
||||
let nativeValue = V.cs_toNativeType(from: value)
|
||||
let snapshotValue = V.cs_valueForSnapshot(from: nativeValue)
|
||||
return V.cs_toPublishedType(from: snapshotValue, in: self.context)
|
||||
|
||||
Reference in New Issue
Block a user