标签: reactive-cocoa

RACSignal指示属性何时返回其初始值

我有一个属性,如果a 处于状态或状态recording,则更改为.YESUILongPressGestureRecognizerUIGestureRecognizerStateBeganUIGestureRecognizerStateChanged

如何创建一个仅在recording返回时而NO不是在其初始值时触发的信号?

ios reactive-cocoa

0
推荐指数
1
解决办法
1104
查看次数

使用RACSubject对RACSignal的简单用法进行单元测试

(我可能会以完全错误的方式使用它,所以请随意挑战这篇文章的前提.)

我有一个小的RACTest应用程序(听起来很熟悉吗?),我正在尝试进行单元测试.我想测试MPSTicker,它是最基于ReactiveCocoa的组件之一.如果累积标志设置为YES,它有一个每秒发送一次累积值的信号.我添加了一个初始化器来为其递增信号采用自定义信号,而不是仅基于定时器.

我想对MPSTicker的几个行为进行单元测试:

  • 当累加使能且输入递增信号发送新值时,验证其累加信号是否正确递增(即单调增加).
  • 当输入信号发送值时,验证它是否发送相同的值(而不是递增的值).

我添加了一个使用内置计时器来测试第一个增量的测试,并且它按照我的预期工作(尽管我正在寻求改进愚蠢的RACSequence初始化的建议,我做了以获得具有@(1)我想要的值的信号. )

我很难确定我可以向MPSTicker提供哪些输入信号,我可以手动发送值.我想象一个测试:

<set up ticker>
<send a tick value>
<verify accumulated value is 1>
<send another value>
<verify accumulated value is 2>
Run Code Online (Sandbox Code Playgroud)

我尝试使用一个,RACSubject所以我可以使用sendNext:我认为合适的价值,但它不像我期望的那样工作.这是两个破碎的测试:

- (void)testManualTimerTheFirst
{
    // Create a custom tick with one value to send.
    RACSubject *controlledSignal = [RACSubject subject];
    MPSTicker *ticker = [[MPSTicker alloc] initWithTickSource:controlledSignal];
    [ticker.accumulateSignal subscribeNext:^(id x) {
        NSLog(@"%s value is %@", __func__, x);
    }]; …
Run Code Online (Sandbox Code Playgroud)

unit-testing reactive-cocoa

0
推荐指数
1
解决办法
2237
查看次数

使用RACSignals的DataSource方法

我可以使用返回值的RACSignal实现dataSource方法.我不喜欢这样的东西 - [self rac_signalForSelector:@selector(tableView:numberOfRowsInSection:)]{ return @10;}];

处理信号时如何处理需要返回值的方法?

objective-c reactive-cocoa

0
推荐指数
1
解决办法
348
查看次数

将Reachability与ReactiveCocoa集成?

我正在使用ReactiveCocoa开发应用程序,现在是时候整合Reachability来处理网络事件了.

我不确定我所做的工作,因为一些RAC设计指南建议反对它.但是从我一直在研究的内容来看,我找不到合适的方法来管理这个(或者更可能的是,我不明白怎么做).

我们的想法是拥有一个独特的信号,在Reachability的通知上发送事件.我们的每个视图控制器都会订阅该信号,并以特定的方式对每个信号做出反应(即ale​​rtview,什么也不做,等等).

问题是我们只需要可见的viewcontroller来做出反应,所以我们使用的是RACDisposable.这样,当一个viewcontroller出现时,它会订阅信号,当它消失时,我们就会处理它.

根据RAC的设计指南,应避免使用RACDisposable,但我无法以任何其他方式处理此订阅/取消订阅周期.

这种方法对于这种"无限"信号是否正确?

我们的另一种选择是使用一个信号,当一个新的用户加入时,它会删除以前的用户.这样的事情存在吗?

提前感谢任何光线,你可以指出我的方向.


这个 SO帖子我开始尝试takeUntil:[self rac_willDeallocSignal]这在理论上似乎有用,但对我来说并不适用.由于此行为封装在Manager中,并且不应该取消分配,我不知道这对我有利.

我想到的一个选项是,takeUntil只要调用一个停止方法,就会触发一个新信号; 但它似乎只是因为我们不使用RACDisposable.

network-programming objective-c reachability ios reactive-cocoa

0
推荐指数
1
解决办法
874
查看次数

Reactive cocoa:在UIViewController为dealloc后停止RACSignal

就我而言,我提出了containerViewController几个UIViewControllers.

其中一个控制器A将每10秒向服务器发送一次请求以获取数据.我用a RACSignal来做:

[[[RACSignal interval:10 onScheduler:[RACScheduler mainThreadScheduler]] takeUntil:self.rac_willDeallocSignal] subscribeNext:DoSomeThing];

但是,当containerViewController从RootViewController的驳回,信号发射仍然每10秒,手段rac_willDeallocSignal控制器A不叫.怎么修好?????

谢谢!!!

ios reactive-cocoa

0
推荐指数
1
解决办法
3363
查看次数

在iOS 8.0项目中安装ReactiveCocoa 3.0.0-alpha.1的问题

我已将ReactiveCocoa添加到我的Podfile并成功安装.但是,当我尝试构建我的项目时,我遇到了"为libPods -LlamaKit.a创建静态库"的问题.

看起来LLamaKit是用Swift编写的(而我的项目是ObjC) - 这有关系吗?

给出的错误是:

error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character `X' in: -Xlinker
Run Code Online (Sandbox Code Playgroud)

objective-c cocoapods reactive-cocoa swift

0
推荐指数
1
解决办法
1392
查看次数

ReactiveCocoa中自动重复倒计时器

我是ReactiveCocoa的新手,有一个问题我还没找到解决办法.我的应用程序中有一个网络请求,它返回要编码的数据,QR码只有30秒有效.网络请求返回a RACSignal并且我将要在该信号中编码的数据发送到我的视图模型.在视图模型中,我将该数据映射到QR图像,并将其作为视图模型界面中的属性公开.在我创建QR图像后,我想更新一个timeLeftString显示"此代码仅在30秒内有效"的属性,但秒数将随着时间的推移而变化,在完成30秒后,我想再次请求获取另一个有效30秒的QR码数据,之后完成另一个请求,获取数据将有效30秒......直到屏幕被解除.我该如何实现呢?

目前我有这个来获取数据:

- (RACSignal *)newPaymentSignal
{
    @weakify(self);
    return [[[[APIManager sharedManager] newPayment] map:^id(NSString *paymentToken) {

        ZXMultiFormatWriter *writer = [ZXMultiFormatWriter writer];
        ZXBitMatrix *result =
            [writer encode:paymentToken format:kBarcodeFormatQRCode width:250 height:250 error:nil];

        if (!result) {
            return nil;
        }

        CGImageRef cgImage = [[ZXImage imageWithMatrix:result] cgimage];
        UIImage *image = [UIImage imageWithCGImage:cgImage];
        return UIImagePNGRepresentation(image);
    }] doNext:^(NSData *data) {
        @strongify(self);
        self.qrImageData = data;
    }];
}
Run Code Online (Sandbox Code Playgroud)

这对于计时器

- (RACSignal *)timeRemainingSignal
{
    @weakify(self);
    return [[[RACSignal interval:0.5 onScheduler:[RACScheduler scheduler]]  //
        startWith:[NSDate date]]                                            //
        initially:^{
            @strongify(self);
            self.expiryDate = …
Run Code Online (Sandbox Code Playgroud)

timer objective-c ios reactive-cocoa

0
推荐指数
1
解决办法
1432
查看次数

通过iOS更正更改文本时,UITextView -rac_textsignal不起作用

看起来UITextView -rac_textsignal在以编程方式更改文本时不起作用,例如通过iOS更正.绑定就是这样的.

RAC(self, viewModel.text) = self.textView.rac_textSignal;
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

uitextview ios reactive-cocoa

0
推荐指数
1
解决办法
796
查看次数

如果在ReactiveCocoa 4中未发送信号,则在延迟后重试

我正在使用ReactiveCocoa 4.0和Swift.我有一个叫做startedSignal类型的信号Signal<String, NoError>,我在视图控制器中订阅.

startedSignal.observeNext { _ in
  // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我基本上想要等待几秒钟,如果startedSignal不发送任何下一个值,则执行其他操作.我查看了文档并查看了类似的内容retry,SignalProducer但我不确定如何实现这一点,因为startedSignal它没有完成或发送错误.

reactive-cocoa swift reactive-cocoa-4

0
推荐指数
1
解决办法
890
查看次数

如何使用反应性可可 5 或 6 链接信号生成器或信号生成器序列?

我几乎是 ReactiveCocoa/ReactiveSwift 的菜鸟。我有两个 SignalProducers。如果第一个 SignalProducer 返回 nil,那么我想执行第二个 SignalProducer,否则不执行。我阅读了文档,但我不确定哪种语法可以帮助我完成这样的工作。任何帮助都受到高度赞赏。

cocoa reactive-programming reactive-cocoa swift reactive-swift

0
推荐指数
1
解决办法
1052
查看次数

如何使用ReactiveCocoa观察Swift中的属性发生了变化

我正在使用新的ReactiveCocoa + ReactiveSwift编写Swift.我正在尝试使用新的ReactiveCocoa框架执行以下操作(在ReactiveCocoa 2.5中):

[[RACObserve(user, username) skip:1] subscribeNext:^(NSString *newUserName) {
    // perform actions...
}];
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我仍然无法弄清楚如何做到这一点.请帮忙!非常感谢你!

reactive-cocoa swift reactive-swift swift4

0
推荐指数
1
解决办法
2415
查看次数

如何观察 ReactiveSwift 中 UIControl 子类的变化?

我已经建立了 UIControl 的一个子类,我想观察切换事件。从 RAC3 天开始就有一些较旧的答案,我们现在已经到了 RAC5,所以我想我会问这个问题以获得更多最新信息。

cocoa-touch ios reactive-cocoa swift

0
推荐指数
1
解决办法
204
查看次数