ios – RACCommand初始化程序信号未命中executionSignals

ios – RACCommand初始化程序信号未命中executionSignals,第1张

概述我一直在研究 MVVM example,使用ReactiveCocoa,它是集合视图中App.net帖子的简单集合,在收集集合视图的边缘之前加载更多帖子. 但是,我遇到了一个问题,我的视图模型上有一个命令.我创建了一个命令,通过AFNetworking客户端加载帖子,并在建模后回复.完成后,它会将响应发送到创建的命令信号,并完成信号. self.loadPostsCommand = [[RACCo 我一直在研究 MVVM example,使用ReactiveCocoa,它是集合视图中App.net帖子的简单集合,在收集集合视图的边缘之前加载更多帖子.

但是,我遇到了一个问题,我的视图模型上有一个命令.我创建了一个命令,通过AFNetworking客户端加载帖子,并在建模后回复.完成后,它会将响应发送到创建的命令信号,并完成信号.

self.loadpostsCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(ID input) {    return [RACSignal createSignal:^RACdisposable *(ID<RACSubscriber> subscriber) {        [[EPhttpClIEnt sharedClIEnt] getGlobalTimelinepostsWithSuccess:^(NSURLSessionDataTask *task,ID responSEObject) {            [self.posts addobjectsFromArray:responSEObject];            [subscriber sendNext:responSEObject];            [subscriber sendCompleted];        } failure:^(NSURLSessionDataTask *task,NSError *error) {            [subscriber sendError:error];        }];        return nil;    }];}];

在我看来,我创建了一个信号来发送剩余的帖子数.

@weakify(self);RACSignal *postsRemainingSignal = [[RACObserve(self.collectionVIEw,contentOffset) map:^(ID value) {    // The value returned from the signal will be an NSValue    CGPoint offset = [value CGPointValue];    NSNumber *postsPassed = @(floorf(offset.x/320) + 1);    return @([self.postQueue.posts count] - [postsPassed integerValue]);}] distinctUntilChanged];

我将这些值发送到我的视图模型上的主题.

// Send the values of the posts to the vIEw model[postsRemainingSignal subscribeNext:^(ID x) {    [self.postQueue.postsRemainingSubject sendNext:x];}];// When the load command is executed,update our vIEw accordingly[self.postQueue.loadpostsCommand.executionSignals subscribeNext:^(RACSignal *loadSignal) {    [loadSignal subscribeCompleted:^{        @strongify(self);        [self.collectionVIEw reloadData];    }];}];

视图模型中的主题实例化为:

// Create a subject to send vIEw values toself.postsRemainingSubject = [RACSubject subject];// Load more posts when less than 4 posts remain[self.postsRemainingSubject subscribeNext:^(ID x) {    if ([x integerValue] < 4) {        [self.loadpostsCommand execute:nil];    }}];

一切都按预期工作,除了向我的命令信号发送值和完成.网络请求发生,我的帖子被建模,但是,视图永远不会在self.postQueue.loadpostsCommand.executionSignals信号上收到任何值.

再次,my project is on GitHub在分支重载 – 信号 – 返工.有什么想法吗?

解决方法 问题是你在发送到postsRemainingSubject之后订阅了executionSignals(这最终导致-execute:被调用).

如果您将订阅移动到postsRemainingSubject上发送的块上方的executionSignals,那么您将看到调用订阅块.

总结

以上是内存溢出为你收集整理的ios – RACCommand初始化程序信号未命中executionSignals全部内容,希望文章能够帮你解决ios – RACCommand初始化程序信号未命中executionSignals所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1054714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存