Cocoa 按下按钮取消以前的请求后,从rac_GET创建rac信号
读完教程后,我正在尝试我的第一个练习。目标是让一个按钮使用AFNetworking和这些工具从互联网上下载一些东西 我想到了这个:Cocoa 按下按钮取消以前的请求后,从rac_GET创建rac信号,cocoa,reactive-cocoa,Cocoa,Reactive Cocoa,读完教程后,我正在尝试我的第一个练习。目标是让一个按钮使用AFNetworking和这些工具从互联网上下载一些东西 我想到了这个: AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer.acceptableContentTypes = nil; RACSignal *buttonSignal = [self.stepperButton
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = nil;
RACSignal *buttonSignal = [self.stepperButton rac_signalForControlEvents:UIControlEventTouchUpInside];
RACSignal *getSignal = [buttonSignal map:^id(UIButton *button) {
return [manager rac_GET:@"https://farm3.staticflickr.com/2815/13668440264_e6403b3100_o_d.jpg" parameters:nil];
}];
RACSignal *latestSignal = [getSignal switchToLatest];
[latestSignal subscribeNext:^(id x) {
NSLog(@"x: %@",x);
}];
这似乎做了我想要的几件事:
x
总是null
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = nil;
RACSignal *buttonSignal = [self.stepperButton rac_signalForControlEvents:UIControlEventTouchUpInside];
RACSignal *getSignal = [buttonSignal map:^id(UIButton *button) {
return [[manager rac_GET:@"https://farm3.staticflickr.com/2815/13668440264_e6403b3100_o_d.jpg" parameters:nil] catch:^RACSignal *(NSError *error) {
NSLog(@"catch %@",error);
return [RACSignal empty];
}];
}];
RACSignal *latestSignal = [getSignal switchToLatest];
[latestSignal subscribeNext:^(NSData *data) {
NSLog(@"dowloaded %d bytes",data.length);
}];
谢谢你提出类似的问题!强大的东西
捕获物应该在rac_GET上。之前,我一直试图用catch做一些事情,但是在按钮信号管道上
而x
总是null
的原因是我没有在管理器上设置序列化程序
我想删除这个问题,但也许还有人对解决方案有意见