草庐IT

ReactiveCocoa

全部标签

ios - ReactiveCocoa 和 PromiseKit 的主要区别是什么?

ReactiveCocoa使用RACSignal而PromiseKit使用Promise来包装值。他们都可以将异步工作链接在一起。ReactiveCocoa和PromiseKit在设计上的主要区别是什么? 最佳答案 信号和promise都是将异步操作表示为类型化值的方式,它们可以以回调/通知/委托(delegate)无法实现的方式传递、链接、组合、嵌套等。两者之间的区别就像正方形和矩形之间的区别,所有的promise都是信号,但并非所有的信号都是promise。promise是信号的一个特定用例。信号表示任意数量的异步事件的时间线,

ios - 在我的 ReactiveCocoa 测试项目中了解 ReactiveCocoa 和 MVVM

我编写了一个非常简单的ReactiveCocoa测试应用程序来尝试在RAC中编码(而不是无休止地阅读它)。在Github上,我想得到一些关于它的具体问题的答案。我将链接到代码组件。首先,对该应用程序进行简要说明:它是一个定时器驱动的迭代计数器,可以由用户暂停。(它的目的是计算已经过去了多少秒,省略了用户暂停它的秒数。)每秒一次,如果用户没有暂停递增行为,计时器递增一个变量。我关心三个类的听觉反馈:MPSTicker(.m),它执行“自初始化以来累积,除非暂停”并在信号上提供该结果。它有一个公共(public)的BOOL属性来控制是否运行累加。MPSViewModel(.m),它提供了一

ios - 如何从 ReactiveCocoa 信号获取当前值?

我有信号返回NSNumber:RACSignal*signal=....然后在代码的某个地方我想在执行时获取信号值,像这样的东西:NSNumber*value=[codethatextractscurrentvalueofsignal]; 最佳答案 信号没有“当前”值的概念。发送值,然后它们消失—它们非常短暂(除非使用重播主题或其他技巧)。您可能想要订阅该信号。查看FrameworkOverview和examplesintheREADME以获得更深入的解释。 关于ios-如何从React

ios - 为什么信号在 ReactiveCocoa 中被调用两次?

我正在用https://github.com/ReactiveCocoa/ReactiveCocoa实现我的第一个代码.用于登录用户。[subscribersendNext:user];行被调用了两次,但我希望只有一次。并且根本不调用map(因此从不调用自动登录)这是我的实现:-(RACSignal*)login:(NSString*)emailpwd:(NSString*)pwd{DDLogInfo(@"Loginuser%@",email);RACSignal*login=[RACSignalcreateSignal:^RACDisposable*(idsubscriber){[P

ios - 使用 ReactiveCocoa 重试异步操作

我正在使用ReactiveCocoa信号来表示对我们系统中RESTful后端的调用。每个RESTful调用都应该接收一个token作为参数之一。token本身是从身份验证API调用中接收的。一切正常,我们现在引入了token过期,因此如果API调用失败并显示HTTP代码403,后端访问类可能需要重新授权自己。我想让这个操作对调用者完全透明,这是我想到的最好的:-(RACSignal*)apiCallWithSession:(Session*)sessionbase:(NSString*)baseparams:(NSDictionary*)paramsget:(BOOL)get{NSMu

ios - 如何获得 UIAlertController observable(ReactiveCocoa 或 RxSwift)?

我实现了一个“响应式(Reactive)”UIAlertController这样我就能得到Observable按下按钮。(见下面的代码)。我的问题是:这个实现是否正确?我不喜欢存储观察者;我想知道是否有更好的解决方案。或者...是否已经在ReactiveCocoa或RxSwift中实现了这个?这里是实现。我删除了与问题无关的部分。classAlertBuilder{typealiasAlertAction=(Int)->()privateletalert:UIAlertController/**Ifobservable()iscalled,wekeepheretheobserverst

ios - 将 ReactiveCocoa 中的信号组合成一个在所有变化时触发的新信号

我正在尝试学习ReactiveCocoa,并且正在根据RayWenderlich教程编写一个简单的SpaceInvaders克隆版。最近在开发过程中,我遇到了一个我无法解决的问题。基本上我有两个信号:点击手势信号每秒触发的定时序列我想要实现的是将这些信号组合成一个新信号,当两个信号都发生变化时触发:可能吗?我看到了combineLatest方法,但只要任何信号发生变化,就会执行该block。我想要的伪代码是:RACSignal*updateEventSignal=[RACSignalinterval:1onScheduler:[RACSchedulermainThreadSchedul

ios - 使用 ReactiveCocoa 4 的简单 UIGestureRecogniser 示例

努力让一个简单的ReactiveCocoa4示例正常工作。我的层次结构中有一个View的平移手势识别器。我有一个预期的触摸事件目标类(假设我想根据触摸位置生成网络数据包)。所以看起来我想从我的手势识别器创建一个信号,映射以提取相对于某个View的触摸位置,然后让我的目标类观察这个信号(或者只是有一些调用方法的最终subscribeNextblock在我的目的地类(class))。但是,似乎无法使任何工作正常进行,也找不到可效仿的好例子。我想我应该写这样的东西(伪代码)panRecognizer.rac_gestureSignal().map{(pgr:UIPanGestureRecog

ios - 如何在 ReactiveCocoa (Swift) 中将 NSError SignalProducer 转换为 NoError SignalProducer

我有一个带有MutableProperty的模型我有一个UIButton(ctaTopButton)应该在按下时翻转该属性,例如,单击时true变为false,反之亦然。我是这样设置的:letproducer=ctaTopButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside).toSignalProducer()|>map{valuein!self.model.enabled.value}//model.enabled我的问题症结来自rac_signalForControlEvents(...).toSignal

ios - 如何将信号数组合并为单个信号 ReactiveCocoa 4

在我的设置中,我有一个GridView由许多GridViewCell组成秒。每个单元格都有一个UITapGestureRecognizer.为方便起见,GridView具有以下功能funccellsTapGestureRecognizers()->[UITapGestureRecognizer?]返回UITapGestureRecognizer其所有单元格的s(如果它们存在)。在UIViewController,使用GridView,我的目标是将水龙头视为Signal秒。我设法做到了这一点,但有一个限制,即我创建了一个Signal对于每个GridViewCell这似乎是不必要的。fun