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, сгенерирует несовместимость с сигнатурой блока.

Другие вопросы по тегам