Files
CoreStore/Sources/AnyCoreStoreKeyPath.swift

84 lines
1.7 KiB
Swift

//
// AnyCoreStoreKeyPath.swift
// CoreStore
//
// Created by John Estropia on 2017/10/02.
// Copyright © 2017 John Rommel Estropia. All rights reserved.
//
import Foundation
// MARK: - AnyCoreStoreKeyPath
public protocol AnyCoreStoreKeyPath {
var cs_keyPathString: String { get }
}
// SE-0143 is not implemented: https://github.com/apple/swift-evolution/blob/master/proposals/0143-conditional-conformances.md
//extension KeyPath: AnyCoreStoreKeyPath where Root: NSManagedObject, Value: ImportableAttributeType {
//
// public var cs_keyPathString: String {
//
// return self._kvcKeyPathString!
// }
//}
extension ValueContainer.Required: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}
extension ValueContainer.Optional: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}
extension TransformableContainer.Required: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}
extension TransformableContainer.Optional: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}
extension RelationshipContainer.ToOne: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}
extension RelationshipContainer.ToManyOrdered: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}
extension RelationshipContainer.ToManyUnordered: AnyCoreStoreKeyPath {
public var cs_keyPathString: String {
return self.keyPath
}
}