问题标签 [racsignal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
684 浏览

ios - 如何从 rac_sequence、reactive cocoa、ios 获取项目

我正在解析服务器响应标头中所需的链接。我的标题看起来像

Access-Control-Allow-Origin → * Age → 0 Cache-Control → private,must-revalidate

连接→保持活动

内容编码 → gzip 内容类型 → 应用程序/json

日期 → 2015 年 6 月 13 日星期六 15:58:56 GMT ETag → W/"cb38bb07f1635fd6aba5969985bf0607"

链接 → http://thisIsCurrentlink&limit=24 ; rel="next", http://thisIsLastlink&limit=24 ; rel="last", http://thisIsFirstlink&limit=24;相对=“第一”,<>;相对=“上一个”

服务器 → nginx

变化 → 接受编码

X-总计数 → 131

传输编码→分块

通过这样做,我可以获得links包含所有链接的数组

然后我正在执行以下操作以获取我需要的所有链接

现在sequence包含所有链接

我的问题是如何从上面访问每个项目sequence

0 投票
1 回答
1015 浏览

ios - 如何等到任务完成再返回一个信号,reactive cocoa

让我解释一下我想要做什么。

  1. endPoint我通过信号包装 endPoint url
  2. 用于提取urlmap并进行服务调用 ( service([NSURL URLWithString: endPoint]))
  3. 用于map从步骤 2 中提取信息并创建info数据
  4. updateVideoStateWith使用回调
  5. 返回一个包含的信号result

最终,当我订阅finalPackage信号时,返回值是初始化值9。我意识到updateVideoStateWith回调将需要时间来返回结果。

我的问题是如何强制return [RACSignal return:result]等到数据从回调块更新。我确实尝试过 takeUntilBlock 但不知道如何使用它。我也考虑使用 switchToLatest 但仍然没有运气。

0 投票
1 回答
226 浏览

objective-c - 我如何使用 ReactiveCocoa/RACSignal 来“RACify”一个 UIApplicationDelegate 生命周期事件,比如 didFinishLaunchingWithOptions?

我想知道如何使用该ReactiveCocoa库来RAC-ifyUIApplicationDelegate生命周期事件。

由于最重要的是- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,这对我来说似乎是一个合乎逻辑的起点。

如果我理解正确,基本思想是创建一个RACSignal封装事件(应用程序使用这些选项完成启动),通过管道串行发送或并行发送到多个“应用程序启动处理程序”,然后合并所有它们的输出——如果是串行的,那么只有在每个返回时才继续YES,如果是并行的,if (handler1 == YES && handler2 == YES ...)——然后return是实际的组合响应UIApplicationDelegate

但是,我对如何实现这一点的确切细节很模糊——这从我的提问中可能很明显。

任何示例,无论是真实代码还是伪代码,都将不胜感激。它对我(可能还有其他人)有双重目的:1)所述的一个,以及 2)提供一个如何RAC-ify 非 UI 驱动事件的示例(嗯,这甚至​​不完全正确,但我认为你明白我的意思)。

0 投票
0 回答
143 浏览

ios - ReactiveCocoa 嵌套映射

如何避免信号序列中的嵌套映射?这是处理这个问题的更好方法吗?

0 投票
2 回答
371 浏览

ios - 重置计时器信号的最佳方法是什么?

我需要每 5 分钟从服务器获取数据。如果我确实下拉刷新,还需要从服务器获取数据,并重置计时器

下面的代码是现在的解决方案,看起来工作正常。只是想知道如何简化代码?可能有更好的方法ReactiveCocoa吗?

0 投票
2 回答
361 浏览

objective-c - 单击单元格外部的按钮时如何将 RACSignal 发送到单元格的 viewMode

我在导航栏上有一个按钮,名为“编辑”。还有UICollectionView一些内容的节目。单击“编辑”按钮将变为“编辑模式”,并且按钮的标题变为“完成”,UICollectionView单元格也应更新。单击“完成”按钮将执行相反的操作。

我已经编写了下面的代码:现在单击“编辑”|“完成”按钮后,孔集合视图将通过刷新进行更新,因为单元格中的图像来自服务,我没有更新它们。我更喜欢通过 Cell 的信号更新图标。但是如何重构代码?

1.viewController的 -(void)viewDidLoad

2.1.viewController的ViewModel的 property

2.2.viewController的ViewModel的 -(id)init

3.viewController的 - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

4.Cell的ViewModel的 -(void)setDataModel:(DataModel)data withIsEditModeSignal:(RACSignal*)isEditModeSignal

5.Cell.m的 -(void)setCellViewModel:(CellViewModel*)viewModel

0 投票
1 回答
161 浏览

ios - RACSignal 订阅问题

MVVM也在我的 iOS 中使用范例RACSignal。到目前为止,事情进展顺利。但是,我在订阅信号时遇到了问题。在第一次订阅时一切正常。然而,进一步的订阅不会。

编码

在我的viewModel我有一个RACSignal这样的声明:

视图模型.h

视图模型.m

然后在 viewModel 中像这样初始化它designated initialiser

然后,当我实际使用中的信号时,viewModel我会做这样的事情:在 viewModel 的各个地方需要的地方——通常在 web 服务块方法中

viewController我订阅这样的信号中:

我订阅了一次信号viewDidLoad

所以一切都在第一次viewDidLoad通话

问题

当我离开viewController并返回它时,它viewWillAppear会被调用,并且会viewModel触发各种触发信号的方法:

然而,viewController不再接收信号。似乎它只适用于他第一次订阅。

有没有办法让信号在每次updateContent调用/触发一个信号时继续工作?

0 投票
1 回答
46 浏览

reactive-cocoa - 我什么时候应该/必须将 ReactiveCocoa 对象声明/实例化为存储属性而不是局部变量?

(适用于ReactiveCocoa4 或 3)

在我见过的大多数示例和案例中,将用户界面连接到数据中所涉及的ReactiveCocoa对象至少在构造函数中调用的某个或类似方法中MutableProperty<TVal, TErr>实例化。SignalProducer<TVal, TErr>setupBindings

我经历过几种情况,当我将对象的声明从范围移动到存储属性时,我的非工作代码突然“正常工作”,反之亦然。例如,在伪代码中:

因此,似乎有一些基本问题。

给定一些ReactiveCocoa对象...

  1. 我什么时候应该将它声明为属性(letvar)与本地实例变量?
  2. 我什么时候应该将它实例化为存储的、计算的或其他属性与实例的变体
  3. 什么时候应该是一个函数return
0 投票
1 回答
206 浏览

ios - ReactiveCocoa `rac_textSignal` 映射完成事件

我是 Reactive Cocoa 的新手。

在将文本视图文本替换为修剪后的版本,我需要在将空白添加到 a 时触发内容UITextView。所以基本上我正在寻找某种完成事件。我想这是一件简单的事情,但我一定错过了一些重要的东西......这就是我所拥有的:

我尝试了几种subscribeCompleted, then,completed块的组合,但没有一个被调用。

如何检测何时self.field.text响应 更新其值whitespaceSignal,然后才触发我的副作用?

0 投票
1 回答
73 浏览

ios - 重试 RACObserve 直到成功

我有 RACObserve 块,我想重试调用,直到它成功返回。所以它不会显示错误消息,但它会重试获取。感谢帮助!