我是Swift的新手,这也是我使用Reactive Cocoa v5或Reactive Swift的原因.
以前我在RAC 2.x上使用RACSignal,我喜欢这样做:
- (RACSignal *)signalForGET:(NSString *)URLString parameters:(NSDictionary *)parameters {
return [RACSignal createSignal:^RACDisposable *(id <RACSubscriber> subscriber) {
AFHTTPRequestOperation *op = [self GET:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
[subscriber sendNext:responseObject];
[subscriber sendCompleted];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[subscriber sendError:error];
}];
return [RACDisposable disposableWithBlock:^{
[op cancel];
}];
}];
}
Run Code Online (Sandbox Code Playgroud)
在这里我喜欢它取消一次性请求,我也可以通过调用dispose返回信号的方法手动取消它.
我对Reactive Swift中的所有这些东西感到有点困惑,比如SignalProducers等.
请举例说明如何使用最新的Swift/ReactiveSwift/ReactiveCocoa版本实现相同的功能.主要要求是能够在任何我想要的地方取消请求(或处理信号),并在处置时自动取消请求