Skip to content

Instantly share code, notes, and snippets.

@zwaldowski
Created October 13, 2016 15:31
Show Gist options
  • Save zwaldowski/1f806c4aed194d5e587201dc7ab84d2a to your computer and use it in GitHub Desktop.
Save zwaldowski/1f806c4aed194d5e587201dc7ab84d2a to your computer and use it in GitHub Desktop.
private extension NSManagedObjectContext {
func executeAsync<T: NSFetchRequestResult>(request: NSFetchRequest, resultsOf _: T.Type = T.self) -> Future<[T]> {
let d = Deferred<[T]>()
let afr = NSAsynchronousFetchRequest(fetchRequest: request) { results in
d.fill(results.finalResult.map({ $0 as! [T] }) ?? [])
}
do {
try performAndWait {
try executeRequest(afr)
}
} catch {
d.fill([])
}
return Future(d)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment