0

私は 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)'
4

1 に答える 1

0

エラーの理由は、subscribeNext ブロックが void を返し、return を配置するとブロック署名との非互換性が生成されるためです。

于 2016-11-12T01:39:44.743 に答える