changed protocol naming

This commit is contained in:
John Rommel Estropia
2017-03-10 08:30:12 +09:00
parent fe25a9aa36
commit 494965de23
13 changed files with 321 additions and 466 deletions

View File

@@ -287,7 +287,7 @@ extension BaseDataTransaction: FetchableSource, QueryableSource {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
public func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
public func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
CoreStore.assert(
self.isRunningInAllowedQueue(),
@@ -306,7 +306,7 @@ extension BaseDataTransaction: FetchableSource, QueryableSource {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
public func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
public func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
CoreStore.assert(
self.isRunningInAllowedQueue(),

View File

@@ -36,19 +36,6 @@ import CoreData
public protocol SelectResultType {}
// MARK: - SelectValueResultType
/**
The `SelectValueResultType` protocol is implemented by return types supported by the `queryValue(...)` methods.
*/
public protocol SelectValueResultType: SelectResultType {
static var cs_rawAttributeType: NSAttributeType { get }
static func cs_fromQueryResultNativeType(_ value: Any) -> Self?
}
// MARK: - SelectAttributesResultType
/**
@@ -395,193 +382,6 @@ public extension Select where T: NSManagedObjectID {
}
// MARK: - NSManagedObjectID: SelectValueResultType
extension NSManagedObjectID: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - NSNumber: SelectValueResultType
extension NSNumber: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - NSString: SelectValueResultType
extension NSString: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - NSDate: SelectValueResultType
extension NSDate: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - NSData: SelectValueResultType
extension NSData: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Self? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Bool: SelectValueResultType
extension Bool: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Bool? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Int8: SelectValueResultType
extension Int8: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Int8? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Int16: SelectValueResultType
extension Int16: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Int16? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Int32: SelectValueResultType
extension Int32: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Int32? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Int64: SelectValueResultType
extension Int64: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Int64? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Int: SelectValueResultType
extension Int: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Int? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Double: SelectValueResultType
extension Double: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Double? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Float: SelectValueResultType
extension Float: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Float? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - CGFloat: SelectValueResultType
extension CGFloat: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> CGFloat? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Date: SelectValueResultType
extension Date: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Date? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - String: SelectValueResultType
extension String: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> String? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - Data: SelectValueResultType
extension Data: SelectValueResultType {
public static func cs_fromQueryResultNativeType(_ value: Any) -> Data? {
return (value as? QueryableNativeType).flatMap(self.cs_fromQueryableNativeType)
}
}
// MARK: - NSDictionary: SelectAttributesResultType
extension NSDictionary: SelectAttributesResultType {

View File

@@ -120,7 +120,7 @@ public struct Where: FetchClause, QueryClause, DeleteClause, Hashable {
- parameter keyPath: the keyPath to compare with
- parameter value: the arguments for the `==` operator
*/
public init<T: CoreStoreQueryableAttributeType>(_ keyPath: KeyPath, isEqualTo value: T?) {
public init<T: QueryableAttributeType>(_ keyPath: KeyPath, isEqualTo value: T?) {
switch value {
@@ -139,7 +139,7 @@ public struct Where: FetchClause, QueryClause, DeleteClause, Hashable {
- parameter keyPath: the keyPath to compare with
- parameter list: the sequence to check membership of
*/
public init<S: Sequence>(_ keyPath: KeyPath, isMemberOf list: S) where S.Iterator.Element: CoreStoreQueryableAttributeType {
public init<S: Sequence>(_ keyPath: KeyPath, isMemberOf list: S) where S.Iterator.Element: QueryableAttributeType {
self.init(NSPredicate(format: "\(keyPath) IN %@", list.map({ $0.cs_toQueryableNativeType() }) as NSArray))
}

View File

@@ -205,7 +205,7 @@ public extension CoreStore {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
public static func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
public static func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
return self.defaultStack.queryValue(from, selectClause, queryClauses)
}
@@ -220,7 +220,7 @@ public extension CoreStore {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
public static func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
public static func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
return self.defaultStack.queryValue(from, selectClause, queryClauses)
}

View File

@@ -250,7 +250,7 @@ extension DataStack: FetchableSource, QueryableSource {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
public func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
public func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
CoreStore.assert(
Thread.isMainThread,
@@ -269,7 +269,7 @@ extension DataStack: FetchableSource, QueryableSource {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
public func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
public func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
CoreStore.assert(
Thread.isMainThread,

View File

@@ -1,5 +1,5 @@
//
// CoreStoreQueryableAttributeType.swift
// QueryableAttributeType.swift
// CoreStore
//
// Copyright © 2017 John Rommel Estropia
@@ -28,9 +28,9 @@ import CoreGraphics
import CoreData
// MARK: - CoreStoreQueryableAttributeType
// MARK: - QueryableAttributeType
public protocol CoreStoreQueryableAttributeType: Hashable {
public protocol QueryableAttributeType: Hashable, SelectResultType {
associatedtype QueryableNativeType: CoreDataNativeType
@@ -44,25 +44,9 @@ public protocol CoreStoreQueryableAttributeType: Hashable {
}
//// MARK: - NSManagedObject
//
//extension NSManagedObject: CoreStoreQueryableAttributeType {
//
// public typealias QueryableNativeType = NSManagedObjectID
//
// public static let cs_rawAttributeType: NSAttributeType = .objectIDAttributeType
//
// @inline(__always)
// public func cs_toQueryableNativeType() -> QueryableNativeType {
//
// return self.objectID
// }
//}
// MARK: - NSManagedObjectID
extension NSManagedObjectID: CoreStoreQueryableAttributeType {
extension NSManagedObjectID: QueryableAttributeType {
public typealias QueryableNativeType = NSManagedObjectID
@@ -78,7 +62,7 @@ extension NSManagedObjectID: CoreStoreQueryableAttributeType {
return forceCast(value)
}
@inline(__always)
@nonobjc @inline(__always)
public func cs_toQueryableNativeType() -> QueryableNativeType {
return self
@@ -88,7 +72,7 @@ extension NSManagedObjectID: CoreStoreQueryableAttributeType {
// MARK: - NSNumber
extension NSNumber: CoreStoreQueryableAttributeType {
extension NSNumber: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -107,6 +91,7 @@ extension NSNumber: CoreStoreQueryableAttributeType {
return forceCast(value)
}
@nonobjc @inline(__always)
public func cs_toQueryableNativeType() -> QueryableNativeType {
return self
@@ -116,7 +101,7 @@ extension NSNumber: CoreStoreQueryableAttributeType {
// MARK: - NSNumber
extension NSDecimalNumber /*: CoreStoreQueryableAttributeType */ {
extension NSDecimalNumber /*: QueryableAttributeType */ {
public override class var cs_rawAttributeType: NSAttributeType {
@@ -127,7 +112,7 @@ extension NSDecimalNumber /*: CoreStoreQueryableAttributeType */ {
// MARK: - NSString
extension NSString: CoreStoreQueryableAttributeType {
extension NSString: QueryableAttributeType {
public typealias QueryableNativeType = NSString
@@ -143,7 +128,7 @@ extension NSString: CoreStoreQueryableAttributeType {
return forceCast(value)
}
@inline(__always)
@nonobjc @inline(__always)
public func cs_toQueryableNativeType() -> QueryableNativeType {
return self
@@ -153,7 +138,7 @@ extension NSString: CoreStoreQueryableAttributeType {
// MARK: - NSDate
extension NSDate: CoreStoreQueryableAttributeType {
extension NSDate: QueryableAttributeType {
public typealias QueryableNativeType = NSDate
@@ -169,7 +154,7 @@ extension NSDate: CoreStoreQueryableAttributeType {
return forceCast(value)
}
@inline(__always)
@nonobjc @inline(__always)
public func cs_toQueryableNativeType() -> QueryableNativeType {
return self
@@ -179,7 +164,7 @@ extension NSDate: CoreStoreQueryableAttributeType {
// MARK: - NSData
extension NSData: CoreStoreQueryableAttributeType {
extension NSData: QueryableAttributeType {
public typealias QueryableNativeType = NSData
@@ -195,7 +180,7 @@ extension NSData: CoreStoreQueryableAttributeType {
return forceCast(value)
}
@inline(__always)
@nonobjc @inline(__always)
public func cs_toQueryableNativeType() -> QueryableNativeType {
return self
@@ -205,7 +190,7 @@ extension NSData: CoreStoreQueryableAttributeType {
// MARK: - Bool
extension Bool: CoreStoreQueryableAttributeType {
extension Bool: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -236,7 +221,7 @@ extension Bool: CoreStoreQueryableAttributeType {
// MARK: - Int8
extension Int8: CoreStoreQueryableAttributeType {
extension Int8: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -258,7 +243,7 @@ extension Int8: CoreStoreQueryableAttributeType {
// MARK: - Int16
extension Int16: CoreStoreQueryableAttributeType {
extension Int16: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -280,7 +265,7 @@ extension Int16: CoreStoreQueryableAttributeType {
// MARK: - Int32
extension Int32: CoreStoreQueryableAttributeType {
extension Int32: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -302,7 +287,7 @@ extension Int32: CoreStoreQueryableAttributeType {
// MARK: - Int64
extension Int64: CoreStoreQueryableAttributeType {
extension Int64: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -324,7 +309,7 @@ extension Int64: CoreStoreQueryableAttributeType {
// MARK: - Int
extension Int: CoreStoreQueryableAttributeType {
extension Int: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -346,7 +331,7 @@ extension Int: CoreStoreQueryableAttributeType {
// MARK: - Double
extension Double: CoreStoreQueryableAttributeType {
extension Double: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -368,7 +353,7 @@ extension Double: CoreStoreQueryableAttributeType {
// MARK: - Float
extension Float: CoreStoreQueryableAttributeType {
extension Float: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -390,7 +375,7 @@ extension Float: CoreStoreQueryableAttributeType {
// MARK: - CGFloat
extension CGFloat: CoreStoreQueryableAttributeType {
extension CGFloat: QueryableAttributeType {
public typealias QueryableNativeType = NSNumber
@@ -412,7 +397,7 @@ extension CGFloat: CoreStoreQueryableAttributeType {
// MARK: - Date
extension Date: CoreStoreQueryableAttributeType {
extension Date: QueryableAttributeType {
public typealias QueryableNativeType = NSDate
@@ -434,7 +419,7 @@ extension Date: CoreStoreQueryableAttributeType {
// MARK: - String
extension String: CoreStoreQueryableAttributeType {
extension String: QueryableAttributeType {
public typealias QueryableNativeType = NSString
@@ -456,7 +441,7 @@ extension String: CoreStoreQueryableAttributeType {
// MARK: - Data
extension Data: CoreStoreQueryableAttributeType {
extension Data: QueryableAttributeType {
public typealias QueryableNativeType = NSData
@@ -478,19 +463,19 @@ extension Data: CoreStoreQueryableAttributeType {
// MARK: - NSNull
extension NSNull: CoreStoreQueryableAttributeType {
extension NSNull: QueryableAttributeType {
public typealias QueryableNativeType = NSNull
public static let cs_rawAttributeType: NSAttributeType = .undefinedAttributeType
@inline(__always)
@nonobjc @inline(__always)
public static func cs_fromQueryableNativeType(_ value: QueryableNativeType) -> Self? {
return self.init()
}
@inline(__always)
@nonobjc @inline(__always)
public func cs_toQueryableNativeType() -> QueryableNativeType {
return self

View File

@@ -44,7 +44,7 @@ public protocol QueryableSource: class {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U?
func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U?
/**
Queries aggregate values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
@@ -56,7 +56,7 @@ public protocol QueryableSource: class {
- parameter queryClauses: a series of `QueryClause` instances for the query request. Accepts `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.
- returns: the result of the the query. The type of the return value is specified by the generic type of the `Select<U>` parameter.
*/
func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U?
func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U?
/**
Queries a dictionary of attribute values as specified by the `QueryClause`s. Requires at least a `Select` clause, and optional `Where`, `OrderBy`, `GroupBy`, and `Tweak` clauses.

View File

@@ -1,5 +1,5 @@
//
// CoreStoreImportableAttributeType.swift
// ImportableAttributeType.swift
// CoreStore
//
// Copyright © 2017 John Rommel Estropia
@@ -27,9 +27,9 @@ import Foundation
import CoreData
// MARK: - CoreStoreImportableAttributeType
// MARK: - ImportableAttributeType
public protocol CoreStoreImportableAttributeType: CoreStoreQueryableAttributeType {
public protocol ImportableAttributeType: QueryableAttributeType {
associatedtype ImportableNativeType: QueryableNativeType
@@ -38,12 +38,15 @@ public protocol CoreStoreImportableAttributeType: CoreStoreQueryableAttributeTyp
@inline(__always)
static func cs_fromImportableNativeType(_ value: ImportableNativeType) -> Self?
@inline(__always)
func cs_toImportableNativeType() -> ImportableNativeType
}
// MARK: - NSNumber
extension NSNumber: CoreStoreImportableAttributeType {
extension NSNumber: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -62,12 +65,18 @@ extension NSNumber: CoreStoreImportableAttributeType {
}
return forceCast(value)
}
@nonobjc @inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self
}
}
// MARK: - NSString
extension NSString: CoreStoreImportableAttributeType {
extension NSString: ImportableAttributeType {
public typealias ImportableNativeType = NSString
@@ -86,12 +95,18 @@ extension NSString: CoreStoreImportableAttributeType {
}
return forceCast(value)
}
@nonobjc @inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self
}
}
// MARK: - NSDate
extension NSDate: CoreStoreImportableAttributeType {
extension NSDate: ImportableAttributeType {
public typealias ImportableNativeType = NSDate
@@ -110,12 +125,18 @@ extension NSDate: CoreStoreImportableAttributeType {
}
return forceCast(value)
}
@nonobjc @inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self
}
}
// MARK: - NSData
extension NSData: CoreStoreImportableAttributeType {
extension NSData: ImportableAttributeType {
public typealias ImportableNativeType = NSData
@@ -134,12 +155,18 @@ extension NSData: CoreStoreImportableAttributeType {
}
return forceCast(value)
}
@nonobjc @inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self
}
}
// MARK: - Bool
extension Bool: CoreStoreImportableAttributeType {
extension Bool: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -157,18 +184,24 @@ extension Bool: CoreStoreImportableAttributeType {
case let decimal as NSDecimalNumber:
// iOS: NSDecimalNumber(string: "0.5").boolValue // true
// OSX: NSDecimalNumber(string: "0.5").boolValue // false
return NSNumber(value: decimal.doubleValue).boolValue
return decimal != NSDecimalNumber.zero
default:
return value.boolValue
}
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSNumber
}
}
// MARK: - Int16
extension Int16: CoreStoreImportableAttributeType {
extension Int16: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -183,12 +216,18 @@ extension Int16: CoreStoreImportableAttributeType {
return value.int16Value
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSNumber
}
}
// MARK: - Int32
extension Int32: CoreStoreImportableAttributeType {
extension Int32: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -203,12 +242,18 @@ extension Int32: CoreStoreImportableAttributeType {
return value.int32Value
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSNumber
}
}
// MARK: - Int64
extension Int64: CoreStoreImportableAttributeType {
extension Int64: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -223,12 +268,18 @@ extension Int64: CoreStoreImportableAttributeType {
return value.int64Value
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSNumber
}
}
// MARK: - Double
extension Double: CoreStoreImportableAttributeType {
extension Double: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -243,12 +294,18 @@ extension Double: CoreStoreImportableAttributeType {
return value.doubleValue
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSNumber
}
}
// MARK: - Float
extension Float: CoreStoreImportableAttributeType {
extension Float: ImportableAttributeType {
public typealias ImportableNativeType = NSNumber
@@ -263,12 +320,18 @@ extension Float: CoreStoreImportableAttributeType {
return value.floatValue
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSNumber
}
}
// MARK: - Date
extension Date: CoreStoreImportableAttributeType {
extension Date: ImportableAttributeType {
public typealias ImportableNativeType = NSDate
@@ -283,12 +346,18 @@ extension Date: CoreStoreImportableAttributeType {
return value as Date
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSDate
}
}
// MARK: - String
extension String: CoreStoreImportableAttributeType {
extension String: ImportableAttributeType {
public typealias ImportableNativeType = NSString
@@ -303,12 +372,18 @@ extension String: CoreStoreImportableAttributeType {
return value as String
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSString
}
}
// MARK: - Data
extension Data: CoreStoreImportableAttributeType {
extension Data: ImportableAttributeType {
public typealias ImportableNativeType = NSData
@@ -323,4 +398,10 @@ extension Data: CoreStoreImportableAttributeType {
return value as Data
}
@inline(__always)
public func cs_toImportableNativeType() -> ImportableNativeType {
return self as NSData
}
}

View File

@@ -59,7 +59,7 @@ public protocol ImportableUniqueObject: ImportableObject {
/**
The data type for the entity's unique ID attribute
*/
associatedtype UniqueIDType: CoreStoreImportableAttributeType
associatedtype UniqueIDType: ImportableAttributeType
/**
The keyPath to the entity's unique ID attribute
@@ -199,7 +199,7 @@ public extension ImportableUniqueObject where Self: NSManagedObject {
set {
self.setValue(
newValue.cs_toQueryableNativeType(),
newValue.cs_toImportableNativeType(),
forKey: type(of: self).uniqueIDKeyPath
)
}

View File

@@ -238,13 +238,13 @@ extension NSManagedObjectContext: FetchableSource, QueryableSource {
// MARK: QueryableSource
@nonobjc
public func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
public func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: QueryClause...) -> U? {
return self.queryValue(from, selectClause, queryClauses)
}
@nonobjc
public func queryValue<T: NSManagedObject, U: SelectValueResultType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
public func queryValue<T: NSManagedObject, U: QueryableAttributeType>(_ from: From<T>, _ selectClause: Select<U>, _ queryClauses: [QueryClause]) -> U? {
let fetchRequest = CoreStoreFetchRequest()
let storeFound = from.applyToFetchRequest(fetchRequest, context: self)
@@ -415,7 +415,7 @@ internal extension NSManagedObjectContext {
// MARK: Querying
@nonobjc
internal func queryValue<U: SelectValueResultType>(_ selectTerms: [SelectTerm], fetchRequest: NSFetchRequest<NSFetchRequestResult>) -> U? {
internal func queryValue<U: QueryableAttributeType>(_ selectTerms: [SelectTerm], fetchRequest: NSFetchRequest<NSFetchRequestResult>) -> U? {
var fetchResults: [Any]?
var fetchError: Error?
@@ -433,9 +433,9 @@ internal extension NSManagedObjectContext {
if let fetchResults = fetchResults {
if let rawResult = fetchResults.first as? NSDictionary,
let rawObject = rawResult[selectTerms.keyPathForFirstSelectTerm()] {
let rawObject = rawResult[selectTerms.keyPathForFirstSelectTerm()] as? U.QueryableNativeType {
return Select<U>.ReturnType.cs_fromQueryResultNativeType(rawObject)
return Select<U>.ReturnType.cs_fromQueryableNativeType(rawObject)
}
return nil
}

View File

@@ -359,7 +359,7 @@ public final class CSSelect: NSObject {
// MARK: CoreStoreObjectiveCType
public init<T: SelectValueResultType>(_ swiftValue: Select<T>) {
public init<T: QueryableAttributeType>(_ swiftValue: Select<T>) {
self.attributeType = T.cs_rawAttributeType
self.selectTerms = swiftValue.selectTerms