- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我也在我的 iOS 中使用 MVVM
范例和 RACSignal
。到目前为止,一切进展顺利。但是,我在订阅信号时遇到了问题。在第一次订阅时一切正常。但是,进一步的订阅不会。
代码
在我的 viewModel
中,我有一个 RACSignal
声明如下:
View 模型.h
@property (strong, readonly, nonatomic) RACSignal *updatedContentSignal;
viewModel.m
@property (nonatomic, readwrite, strong) RACSubject *updatedContentSignal;
然后在 viewModel 的 designated initialiser
中像这样初始化它:
self.updatedContentSignal = [[RACSubject alloc]init];
然后当我在 viewModel
中实际使用信号时,我会做这样的事情:在 viewModel 的不同地方需要的地方 - 通常在 Web 服务 block 方法中
[(RACSubject *)self.updatedContentSignal sendNext:nil];
[(RACSubject *)self.updatedContentSignal sendCompleted];
[(RACSubject *)self.updatedContentSignal sendError:error];
在 viewController
中,我像这样订阅信号:
[self.viewModel.updatedContentSignal subscribeNext:^(id x) {
} error:^(NSError *error) {
} completed:^{
}];
我在 viewDidLoad
上订阅了一次信号
所以所有工作都在第一个 viewDidLoad
调用上进行
问题
当我离开 viewController
并回到它时 viewWillAppear
被调用,并且 viewModel
触发各种触发信号:
[(RACSubject *)self.updatedContentSignal sendNext:nil];
[(RACSubject *)self.updatedContentSignal sendCompleted];
[(RACSubject *)self.updatedContentSignal sendError:error];
但是 viewController
不再接收信号。看来它只适用于他第一次订阅。
有没有办法让信号在每次调用/触发 updateContent
信号之一时继续工作?
最佳答案
由于您的代码不是很全面,我只能说信号将在完成后立即消除(通过 sendCompleted:
或 sendError:
)。
所以如果你想继续,你将只需要使用sendNext:
。
仅使用 sendCompleted
,以防您想要表明它已不再使用。
SendError:
使用,以防您收到错误。所以在你的网络服务 block 中你需要这样的东西:
if(!error) {
sendNext:xxx;
} else {
sendError:error;
}
关于ios - 订阅 RACSignal 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063427/
例如,我目前的实现如下: - (RACSignal *)getPlaylist { return [RACSignal createSignal:^RACDisposable *(id subsc
使用 ReactiveCocoa,我确定有比这更好的方法吗? RACSignal *crashSignal = [cancelSignal tryMap:^id(id value, NSError *
rac_textSignal-Implementation使用“defer”在“self”上返回 RACSignal。这是什么原因? 这是实现: - (RACSignal *)rac_textSign
我有一个简单的 subscribeNext: error: 链,如: [[self.viewModel signal] subscribeNext:^(id x) { NSLog(@"succ
我已将一些 racsignals 合并为一个 Racsignal。并订阅合并信号。现在,如果我合并的任何信号发送错误事件,所有合并的信号都会被处理掉。如果任何信号失败,我希望所有信号继续执行。 最佳答
我有一个属性,recording,如果 UILongPressGestureRecognizer 处于状态 UIGestureRecognizerStateBegan 或UIGestureRecogn
我目前正在开发 WatchKit 应用程序,但我目前遇到此给定方法的问题: - (void)application:(UIApplication*)application handleWatchKit
我正在尝试使用 ReactiveCocoa 的 RACSignal 类的间隔方法。以下代码在 1 秒后每秒运行一次。但我希望它每秒都能立即运行。什么是最好的方法? @weakify(self); [[
我有一个简单的问题,但找不到好的解决方案。 我有一个发送字符串的信号,然后是一个 map。 map 将字符串转换为 JSON。 可能会出现字符串格式错误导致JSON解析器解析失败的情况。 [strin
我是 Reactive Cocoa 的新手。我正在尝试通过信号设置按钮启用属性。我有以下代码片段可以正常工作: RACSignal *formValid = [RACSignal
我的 ViewController 包含一个 UISearchBar 并实现了 UISearchBarDelegate 协议(protocol)。我为 searchBartextDidChange:
我也在我的 iOS 中使用 MVVM 范例和 RACSignal。到目前为止,一切进展顺利。但是,我在订阅信号时遇到了问题。在第一次订阅时一切正常。但是,进一步的订阅不会。 代码 在我的 viewMo
我正在尝试使用 react 性 cocoa 进行并发加载,我的实现使用了已弃用的缓冲方法。我如何才能在不损失代码清晰度的情况下更改它? 输入:仅发送一次“下一步”并完成/错误的加载信号数组 期望的结果
我对 ReactiveCocoa 比较陌生,想知道如何将一系列 REST GET 调用链接在一起,以便它们按顺序执行。如果其中一个调用出错,则整个过程将回滚。 所以我正在使用 pod 'AFNetwo
例如: 在一个 Controller 中实现 func sendSuccessOrNot()->RACSignal { // code here } 在另一个 Controller 中,调用那个信号
我目前正在迈出 ReactiveCocoa 的第一步,我经历了一些陡峭的学习曲线来理解原则。 无论如何,这就是我已经想到的。 我将 NSArray 属性绑定(bind)到 RACSignal,以便能够
我的任务是向应用添加一些检测逻辑以跟踪各种 API 调用的延迟。我正在努力想出一种干净、无副作用的方法来向返回 RACSignal(延迟执行 API 调用)的方法添加计时检测。 注意事项 使用 Rea
我正在编写一些通过 websockets 与远程 API 交互的代码。我的数据层负责建立和监控 websocket 连接。它还包含应用程序可以用来对要发送的 websocket 消息进行排队的方法。应
我正在尝试返回一个可以在 Objective-C 代码中使用的 RACSignal,我尝试了各种方法。例如: @objc class func getPosts() -> RACSignal
我正在尝试监听位置更新和错误(通过 CLLocationManagerDelegate),并支持跟踪错误但将它们从最终信号中过滤掉并保持其事件的能力。 当我订阅位置信号时(通过 ReactiveCoc
我是一名优秀的程序员,十分优秀!