Tighter generics implementations. You can now pass any SequenceType's for methods that previously only accepts Array's.

This commit is contained in:
John Rommel Estropia
2015-09-19 18:20:52 +09:00
parent 7451fbe026
commit 114b7ce605
10 changed files with 33 additions and 80 deletions
@@ -78,17 +78,9 @@ public extension BaseDataTransaction {
- returns: the `NSManagedObject` array for objects that exists in the transaction
*/
@warn_unused_result
public func fetchExisting<T: NSManagedObject>(objects: [T]) -> [T] {
public func fetchExisting<T: NSManagedObject, S: SequenceType where S.Generator.Element == T>(objects: S) -> [T] {
var existingObjects = [T]()
for object in objects {
if let existingObject = (try? self.context.existingObjectWithID(object.objectID)) as? T {
existingObjects.append(existingObject)
}
}
return existingObjects
return objects.flatMap { (try? self.context.existingObjectWithID($0.objectID)) as? T }
}
/**
@@ -98,17 +90,9 @@ public extension BaseDataTransaction {
- returns: the `NSManagedObject` array for objects that exists in the transaction
*/
@warn_unused_result
public func fetchExisting<T: NSManagedObject>(objectIDs: [NSManagedObjectID]) -> [T] {
public func fetchExisting<T: NSManagedObject, S: SequenceType where S.Generator.Element == NSManagedObjectID>(objectIDs: S) -> [T] {
var existingObjects = [T]()
for objectID in objectIDs {
if let existingObject = (try? self.context.existingObjectWithID(objectID)) as? T {
existingObjects.append(existingObject)
}
}
return existingObjects
return objectIDs.flatMap { (try? self.context.existingObjectWithID($0)) as? T }
}
/**
@@ -62,7 +62,7 @@ public extension CoreStore {
- returns: the `NSManagedObject` array for objects that exists in the `DataStack`
*/
@warn_unused_result
public static func fetchExisting<T: NSManagedObject>(objects: [T]) -> [T] {
public static func fetchExisting<T: NSManagedObject, S: SequenceType where S.Generator.Element == T>(objects: S) -> [T] {
return self.defaultStack.fetchExisting(objects)
}
@@ -74,7 +74,7 @@ public extension CoreStore {
- returns: the `NSManagedObject` array for objects that exists in the `DataStack`
*/
@warn_unused_result
public static func fetchExisting<T: NSManagedObject>(objectIDs: [NSManagedObjectID]) -> [T] {
public static func fetchExisting<T: NSManagedObject, S: SequenceType where S.Generator.Element == NSManagedObjectID>(objectIDs: S) -> [T] {
return self.defaultStack.fetchExisting(objectIDs)
}
@@ -79,17 +79,9 @@ public extension DataStack {
- returns: the `NSManagedObject` array for objects that exists in the `DataStack`
*/
@warn_unused_result
public func fetchExisting<T: NSManagedObject>(objects: [T]) -> [T] {
public func fetchExisting<T: NSManagedObject, S: SequenceType where S.Generator.Element == T>(objects: S) -> [T] {
var existingObjects = [T]()
for object in objects {
if let existingObject = (try? self.mainContext.existingObjectWithID(object.objectID)) as? T {
existingObjects.append(existingObject)
}
}
return existingObjects
return objects.flatMap { (try? self.mainContext.existingObjectWithID($0.objectID)) as? T }
}
/**
@@ -99,17 +91,9 @@ public extension DataStack {
- returns: the `NSManagedObject` array for objects that exists in the `DataStack`
*/
@warn_unused_result
public func fetchExisting<T: NSManagedObject>(objectIDs: [NSManagedObjectID]) -> [T] {
public func fetchExisting<T: NSManagedObject, S: SequenceType where S.Generator.Element == NSManagedObjectID>(objectIDs: S) -> [T] {
var existingObjects = [T]()
for objectID in objectIDs {
if let existingObject = (try? self.mainContext.existingObjectWithID(objectID)) as? T {
existingObjects.append(existingObject)
}
}
return existingObjects
return objectIDs.flatMap { (try? self.mainContext.existingObjectWithID($0)) as? T }
}
/**