问题标签 [reactive-cocoa-3]

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

cocoapods - 如何设置 ReactiveCocoa 3.0 podspec 以用作我的测试项目的“私有 pod”?

我正在使用我的 WORKBENCH 项目来学习 ReactiveCocoa。但是,最新的 CocoaPod 规范适用于 2.1.8 版——我想使用 ReactiveCocoa 3.0 来完成“学习曲线”。我想过创建一个“Private CocoaPod” podspec 的路线,但对我来说并没有成功……(我是 CocoaPods 的菜鸟)。无论如何,有人做过吗?有没有更好的方法?理想情况下,我想在更新时使用 Sourcetree 更新 ReactiveCocoa 3.0 - 就像它现在适用于 2.1.8 版一样......谢谢。

0 投票
2 回答
641 浏览

swift - 可以/我应该如何用 RC3 替换我的 KVO 东西?

我正在尝试将使用 Facebook 的 KVOController 的 objc 应用程序移植到 Swift。我被鼓励将RC3视为另一种更 Swiftish 的方法。我已经阅读了一些博客,并鼓励我尝试一下。但是许多文档和博客似乎都集中在套接字和计时器上作为示例。所以我现在有两个简单的问题:

1)给定一个objc片段,如:

用 RC3 API 重写它的简单方法是什么?self.KVOController unobserve: self.site当该视图卸载时发生的 RC3 等效项是什么?

2) 推荐我使用Carthage 来抓取RC3 代码。我可以将 a 与已经使用可可豆荚的项目安全地混合在一起Cartfile吗?AlamofireSwiftyJSON

0 投票
2 回答
4073 浏览

ios - 如何使用 ReactiveCocoa 3 实现基本的 UITextField 输入 + UIButton 动作场景?

我同时是 Swift 和 ReactiveCocoa 菜鸟。使用 MVVM 和 Reactive Cocoa v3.0-beta.4 框架,我想实现这个设置,以了解新 RAC 3 框架的基础知识。

我有一个文本字段,我希望文本输入包含 3 个以上的字母,以进行验证。如果文本通过验证,则应启用下方的按钮。当按钮接收到按下事件时,我想使用视图模型的属性触发一个动作。

由于目前关于 RAC 3.0 beta 的资源很少,我通过阅读框架的 Github repo 上的 QAs 来实现以下内容。到目前为止,这是我能想到的:

ViewModel.swift

ViewController.swift

RACUtilities.swift

使用此设置,当视图模型的文本长度超过 3 个字符时,按钮将启用。当用户点击按钮时,视图模型的动作就会运行,我可以将返回值设为 true。到目前为止,一切都很好。

我的问题是:在视图模型的操作中,我想使用其存储的文本属性并更新代码以使用它发出网络请求。所以,我不需要来自视图控制器的输入。我的 Action 属性如何不需要输入?

0 投票
1 回答
3684 浏览

swift - 如何在 ReactiveCocoa 3 和 4 中进行基本绑定

我最近一直在阅读 ReactiveCocoa v3,我正在努力设置基本的东西。我已经阅读了变更日志、测试、几个 SO 问题以及 Colin Eberhardt 关于该主题的文章。但是,我仍然缺少有关基本绑定的示例。

假设我有一个显示当天菜单的应用程序。该应用程序使用 RAC3 和 MVVM 模式。

型号(菜单)

该模型有一种获取今日菜单的简单方法。至于现在,这不做任何网络请求,它基本上只是创建一个模型对象。该mainCourse物业是一个String

视图模型(菜单视图模型)

视图模型公开了不同String的变量,让视图控制器显示菜单。让我们添加一个属性来显示主菜。

我们为这个属性添加一个绑定:

视图控制器(菜单视图控制器)

最后但并非最不重要的一点是,我想在一个视图中介绍这门主课。我会UILabel为此添加一个。

最后我想text通过观察我的视图模型来设置那个 UILabel 的属性。像:_

不幸的是,这不起作用。

问题

  1. 该方法fetchTodaysMenu()返回 a SignalProducer<Menu, NoError>,但是如果我希望此方法返回 aSignalProducer<Menu, NSError>怎么办?这将使我在视图模型中的绑定失败,因为该方法现在可能会返回错误。我该如何处理?
  2. 如前所述,我的视图控制器中的当前绑定不起作用。我一直在尝试创建一个MutableProperty代表 的text属性UILabel,但我从来没有做对。我还认为必须为我要绑定的每个属性创建额外的变量感觉很笨拙或冗长。这在 RAC2 中是不需要的。我也有意避免使用DynamicProperty,但也许我不应该?我基本上只是想找到正确的做法RAC(self.headline, text) = RACObserve(self.viewModel, mainCourse);

非常感谢有关如何进行此基本设置的任何其他反馈/指导。

0 投票
1 回答
975 浏览

ios - 如何转换“SignalProducer“到”信号制作人“ReactiveCocoa 3 的?

我尝试创建一个Action<AnyObject?, Bool, NSError>ReactiveCocoa 3 的实例。

此代码无法编译并出现错误'SignalProducer<Bool, NoError>' is not convertible to 'SignalProducer<Bool, NSError>'

我怎样才能转换SignalProducer<Bool, NoError>SignalProducer<Bool, NSError>

0 投票
1 回答
567 浏览

swift - 在 ViewModel Swift (Reactive Cocoa 3.0) 中观察鼠标事件

我正在尝试使用 RAC 3.0 在我的视图和我的 viewModel 之间建立连接。(一直在阅读 Colin Eberhardt 的精彩教程)我想订阅一个每次func mouseUp(theEvent: NSEvent)调用都会触发的信号。IE

然后在我的 viewModel 中我想订阅那个流。

但我无法让它工作。我设法让它工作的唯一方法是订阅一个 SignalProducer,如下所示:

看法:

视图模型:

但这不是我想要的,因为使用生产者“拉”值,即在第一次运行时,viewModel 中的代码将在初始化时以空值运行,因为它试图拉出不存在的东西.. .

希望这是有道理的。

0 投票
1 回答
1454 浏览

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

我有一个带有 a 的模型,MutableProperty<Bool>并且我有一个UIButton(ctaTopButton) 应该在按下该属性时翻转该属性,例如,单击时 true 变为 false,反之亦然。

我是这样设置的:

我的问题的症结来自地图转换为的rac_signalForControlEvents(...).toSignalProducer()返回SignalProducer<AnyObject?, NSError>SignalProducer<Bool, NSError>

然而,中缀运算符<~仅适用于SignalProducer<Bool, NoError>因此我需要以某种方式转换我的生产者。

我的问题是,我如何降级错误?我知道有一个promoteErrors用于转换NoErrorNSError. 还有mapError虽然我不知道如何取回一个实例,NoError因为它没有初始化程序。

0 投票
1 回答
154 浏览

swift - 写函数式代码时全局函数有什么好处

我是一名 Swift 开发人员,正在尝试在我的代码中采用函数式/反应式风格。我一直ReactiveCocoa在我的所有项目中使用,我已经开始RAC 3.0尝试。我看到的一件事是,在项目中,大量使用了具有全局范围的柯里化函数(即不绑定到实例)。

我很想了解的是为什么全局函数是个好主意?

这是柯里化函数独有的东西还是一般的函数式编程属性?

0 投票
1 回答
63 浏览

ios - 链接到静态 TableView 中的控件的插座未初始化

我正在尝试设置主详细信息导航。我使用storyboard,master是动态表,details是静态表。 故事板 我在控制器中有一个 nameLabel 设置作为插座,但是当我尝试在 viewDidLoad 中访问它时,它仍然设置为 nil。

我没有使用prepareForSegue,而是使用了didSelectRowAtIndexPath,它像这样推送详细视图:(因为我使用的是TableViewBindingHelper,请参阅https://github.com/ColinEberhardt/ReactiveTwitterSearch/tree/master/ReactiveTwitterSearch/Util

课程视图控制器:

我怎样才能解决这个问题?

我见过的其他示例代码在 segue 中执行导航,最终调用 init(coder aDecoder: NSCoder) 构造函数,并且所有出口都已初始化。

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 驱动事件的示例(嗯,这甚至​​不完全正确,但我认为你明白我的意思)。