在试图减少几个信号时,我遇到了一个可怕的编译问题。
RACSignal* contactIdentifierSignal = RACObserve(self, contactIdentifier);
RACSignal* displayNameSignal = RACObserve(self, displayName);
RACSignal* mappedThing = [RACSignal combineLatest:@[contactIdentifierSignal, displayNameSignal] reduce:^id(NSString* identifierValue, NSString* displayNameValue){
return @([identifierValue length] > 0 && [displayNameValue length] > 0);
}];我得到的错误是:
无法使用‘id(^)类型( NSString* __strong,NSString* __strong)’类型的rvalue初始化类型'id(^)()‘的参数

根据ReactiveCocoa的文档,对于组合块中的每个信号,我应该有一些参数,但它似乎不起作用。
我不知道为什么这个东西需要一个没有参数的减少块.
以前有人遇到过这个问题吗?
发布于 2015-03-06 16:43:00
我知道这看起来很可怕,但是由于我使用的是Objective++,这个东西会变得疯狂。
我把它丢到身份证上解决了这件事.别问我为什么。
RACSignal* contactIdentifierSignal = RACObserve(self, contactIdentifier);
RACSignal* displayNameSignal = RACObserve(self, displayName);
RACSignal* mappedThing = [RACSignal combineLatest:@[contactIdentifierSignal, displayNameSignal] reduce:(id)^id(NSString* identifierValue, NSString* displayNameValue){
return @([identifierValue length] > 0 && [displayNameValue length] > 0);
}];发布于 2015-03-06 15:49:53
我最近听说这个错误发生在使用Objective++时。无论您是否使用objc++,请考虑使用combineLatest:,然后使用map:,很可能使用RACTupleUnpack。
https://stackoverflow.com/questions/28898832
复制相似问题