RACSignal: обработка несовместимых типов указателей блоков
Я новичок в Reactive Cocoa, и мне интересно, может ли кто-нибудь помочь мне с этой проблемой:
Вот фрагмент кода, доставляющий мне неприятности:
[[[self getFormItemAttachmentHeaders:listName
topListItemID:form.topListItemID
form:form
] map:^id(NSMutableArray* value) {
NSArray* attachmentHeaders = [value copy];
return attachmentHeaders;
}
] subscribeNext:^(NSArray* attachmentHeaders) {
return [self uploadFormItemAttachments:pendingAttachments
attachmentHeaders:attachmentHeaders
form:form];
}
];
Этот код вызывается из объекта RACsignal в том же методе, определенном как таковой:
RACSignal* batchSignal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[pendingAttachments enumerateObjectsUsingBlock:^(SEFSManagedAttachment* pendingImage, NSUInteger idx, BOOL *stop) {
Следующая строка кода:
return [self uploadFormItemAttachments:pendingAttachments
attachmentHeaders:attachmentHeaders
form:form];
Генерирует ошибку:
Incompatible block pointer types sending 'RACSignal *(^)(NSArray *__strong)' to parameter of type 'void (^)(__strong id)'
1 ответ
Причина ошибки заключается в том, что блок subscribeNext возвращает void и, поместив return, сгенерирует несовместимость с сигнатурой блока.