Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 反应链接网络操作失败_Objective C_Parse Platform_Reactive Cocoa - Fatal编程技术网

Objective c 反应链接网络操作失败

Objective c 反应链接网络操作失败,objective-c,parse-platform,reactive-cocoa,Objective C,Parse Platform,Reactive Cocoa,我尝试使用ReactiveCocoa进行网络操作链接,但失败了。我不知道我的代码出了什么问题 - (RACSignal *)pg_findObjectsInBackground { return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { [self findObjectsInBackgroundWithBlock:^(NSArray *objects, N

我尝试使用ReactiveCocoa进行网络操作链接,但失败了。我不知道我的代码出了什么问题

- (RACSignal *)pg_findObjectsInBackground {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {

        [self findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (error) {
                [subscriber sendError:error];
                return;
            }
            [subscriber sendNext:objects];
            [subscriber sendCompleted];
        }];

        return [RACDisposable disposableWithBlock:^{
            [self cancel];
        }];
    }];
}

- (RACSignal *)pg_countObjectsInBackground {
    return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {

        [self countObjectsInBackgroundWithBlock:^(int number, NSError *error) {
            if (error) {
                [subscriber sendError:error];
                return;
            }
            [subscriber sendNext:@(number)];
            [subscriber sendCompleted];
        }];

        return [RACDisposable disposableWithBlock:^{
            [self cancel];
        }];
    }];
}

第一个请求成功。但是,我一返回[self.query pg_findObjectsInBackground],它就直接转到disposableWithBlock。

因为在计数和查找对象操作中使用相同的PFQuery对象,所以从FlattMap方法返回时,查询将被取消。扁平地图订阅了新的信号,这是相同的信号,我相信这会导致一次性武器开火。一个简单的解决方案是构造一个新的PFQuery并在flattmap块中返回它

我假设您正在使用Parse,如果您正在使用,则应该标记它

    __block NSError *_error;
    @weakify(self)
    [[[self.query pg_countObjectsInBackground]flattenMap:^RACStream *(NSNumber *count) {
        @strongify(self)
        self.totalCount = [count integerValue];
        // Second, fetch experiences
        self.query.limit = self.pageSize;
        self.query.skip = self.pageSize * self.currentPage;
        return [self.query pg_findObjectsInBackground];
    }]subscribeNext:^(NSArray *experiences) {
        @strongify(self)
        [self.experiences removeAllObjects];
        [self.experiences addObjectsFromArray:experiences];
    } error:^(NSError *error) {
        _error = error;
    } completed:^{
        @strongify(self)
        if (finishBlock) {
            finishBlock(self, _error);
        }
    }];