A Swift framework inspired by WWDC 2015 Advanced NSOperations session.
- iOS 8.0+
- Xcode 8.1+
- Swift 3.0+
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapodsTo integrate OperationKit into your Xcode project using CocoaPods, specify it in your Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'OperationKit', '~> 2.1'
endThen, run the following command:
$ pod installOperation is an Foundation.Operation subclass. It is an abstract class which should be subclassed.
import OperationKit
class FooOperation: Operation {
override func execute() {
print("running")
finish()
}
}
let operationQueue = OperationQueue()
let fooOperation = FooOperation()
operationQueue.addOperation(fooOperation)Observers are attached to an Operation. They receive callbacks when operation events occur.:
operation.addObserver(BlockObserver { operation, _ in
print("finished")
})OperationKit also provides TimeoutObserver and NetworkObserver.
Conditions are attached to an Operation. Before an operation is ready to execute it will asynchronously evaluate all of its conditions. If any condition fails, the operation finishes with an error instead of executing. For example:
let urlRequestOperation = URLRequestOperation(request: request)
urlRequestOperation.addCondition(ReachabilityCondition(host: request.url!))import OperationKit
let operationQueue = OperationKit.OperationQueue()
let dataRequestOperation = DataRequestOperation(request: request)
operationQueue.addOperation(operationQueue)Handling the Response of a DataRequest made in OpertationKit is easy.
dataRequestOperation.responseJSON { result in
switch result {
case let .success(responseJSON):
print(responseJSON)
case let .failure(_error):
print("error")
}
}