问题标签 [reactive-cocoa]

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 回答
611 浏览

ios - 如何在信号链中发送错误

我有一个包含整数值的信号 A。-1 值表示无效结果,所以我想发送错误,而不是将 -1 作为值传递。这样订阅 B 的任何东西都将通过 subscribeNext: 接收有效整数,并通过 subscribeError: 接收错误。

我想我知道如何用 RACSubject 做到这一点:

我想知道是否有一种更“内联”的方式来做到这一点:

0 投票
1 回答
1273 浏览

objective-c - 在 dispatch_queue sendComplete 上创建的 RACSubject 不会使其成为合并信号

当在 DISPATCH_QUEUE_PRIORITY_DEFAULT gcd 队列上运行的 dispatch_async 块中时:我创建两个 RACSubject 对象,使用 RACSignal 合并:然后订阅完成。然后,出于此测试的目的(并在我的实际代码中复制该场景),我对它们都发送了 sendComplete。合并的信号完成订阅永远不会触发。我独立地为主题附加了两个完成订阅,它们确实会触发。如果我在主线程而不是 gcd 队列上进行相同的测试,那么它会按预期工作。

有没有办法完成这项工作,或者我是否必须重构才能将所有主题都放在主线程上?

0 投票
2 回答
4181 浏览

objective-c - 创建信号信号以组合到信号并在完成或错误时完成的首选方法是什么?

我有通过 NSNotificationCenter 的成功通知和失败通知。我编写了一些测试来弄清楚如何将来自这两个通知的信号组合成一个信号,该信号在失败通知命中时提供错误,在成功通知命中时提供下一个信号。

目前完整的块不会被击中,下一个和错误会被击中。

另外,第二个额外的问题:为什么 @[errorNotification, completeNotification].rac_sequence.signal 不做与下面的信号创建信号相同的事情?

代码:

0 投票
3 回答
8460 浏览

ios - 如何使用带有通知的 Reactive Cocoa

如何从通知名称中创建信号?例如,我想从:

类似于:

0 投票
2 回答
374 浏览

reactive-cocoa - 扫描不同类型信号的合并

假设我有一个数组arraySignal信号和一个对象信号addedObjectsSignal

我想定义第三个信号 ,modifiedArraySignal它从 中获取最新的数组,并将最新数组以来发送arraySignal的对象添加到其中。addedObjectsSignalarraySignal

这是一种方法:

还有另一种不使用的方法-[NSObject isKindOfClass:]吗?

0 投票
1 回答
656 浏览

ios - ReactiveCocoa 将单个信号转换为值

我一直在使用 ReactiveCocoa,但我一直在这样做:

但似乎直接绑定到我关心的东西会更好。更像这样:

如何将信号转换为不同的东西?所有示例都使用combineLatest:reduce但我只有一个信号,并且减少和映射抛出错误。

你会如何组织这个?

0 投票
1 回答
999 浏览

ios - 等待在 ReactiveCocoa 中通知订阅者,直到代码完成?

使用 ReactiveCocoa 和 KVO,如果您订阅了某些内容,它会在您更改绑定的值时立即通知订阅者。假设我的状态取决于 user.firstName 和 user.lastName:

只要设置了两个变量,每次我更改or时它都会调用setFullNamefirstNamelastName

我希望它等到更改“确定”才能调用全名,因此,如果我在同一个函数中设置值,它会setFullName使用最终值调用一次。

我怎样才能做到这一点?

0 投票
1 回答
885 浏览

objective-c - 如何使用 ReactiveCocoa 简化嵌套的 for 循环?

假设我有 2 个NSDictionaries我事先不知道的,例如:

我想找到 的键dictB和 的键或值之间的第一个匹配项dictA。的每个键dictB要么是一个 NSNumber 要么是一个字符串。如果是数字,请尝试从 的中查找匹配项dictA。如果是字符串,请尝试dictA.

使用 for 循环,它看起来像这样:

我如何使用RACSequenceRACStream方法用 ReactiveCocoa 重写它,所以它看起来像:

0 投票
2 回答
371 浏览

iphone - Reactive Cocoa reduce 块永远不会被调用

我正在尝试围绕 Reactive Cocoa,一切正常,除了RAC(self.windButton.enabled)部分(在底部),reduce 块永远不会被调用。如果有人能指出我的错误,我会很高兴。代码是不言自明的,基本上app是这样的:

应用截图

这是实现

我的问题是按钮永远不会被禁用。

0 投票
2 回答
4177 浏览

ios - 带有异步网络请求的 ReactiveCocoa 排序

我正在构建一个演示应用程序,并试图尽可能地符合ReactiveCocoa 设计模式。这是该应用程序的功能:

  • 查找设备的位置
  • 每当位置键更改时,获取:
    • 当前天气
    • 每小时预报
    • 每日预报

所以顺序是 1) 更新位置 2) 合并所有 3 个天气获取。我已经构建了一个WeatherManager暴露天气对象、位置信息和手动更新方法的单例。这个单例符合CLLocationManagerDelegate协议。位置代码非常基本,所以我将其省略。唯一真正感兴趣的是:

获取天气条件都非常相似,因此我构建了一个方法来生成RACSignal从 URL 获取 JSON 的方法。

这有助于我保持我的方法干净整洁,所以现在我有 3 个简短的方法来构建 URL 并返回 RACSignal。这里的好处是我可以创建副作用来解析 JSON 并分配适当的属性(注意:我在这里使用Mantle)。

最后,在-init我的单身人士中,我在位置上设置了 RAC 观察者,因为每次位置发生变化时,我都想获取和更新天气。

一切正常,但我担心我偏离了响应式方式来构建我的获取和属性分配。我尝试过进行测序,-then:但并没有真正按照我的意愿进行设置。

我还试图找到一种干净的方法来将异步获取的结果绑定到我的单例的属性,但是在让它工作时遇到了麻烦。我无法弄清楚如何“扩展”获取RACSignals (注意:这就是-doNext:每个人的想法的来源)。

任何帮助解决这个问题或资源都会非常棒。谢谢!