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

Tra*_*ggs 7 key-value-observing reactive-cocoa swift carthage reactive-cocoa-3

我正在尝试将使用Facebook的KVOController的objc应用程序移植到Swift.我被鼓励将RC3看成是一种替代的,更加迅捷的方法.我已经阅读了一些博客,我很鼓励尝试一下.但是很多文档和博客似乎都集中在套接字和定时器上作为例子.所以我现在有两个简单的问题:

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

[self.KVOController observe: self.site keyPath: @"programs" options: NSKeyValueObservingOptionInitial block:^(id observer, id object, NSDictionary *change) {
    [self.tableView reloadData];
}];
Run Code Online (Sandbox Code Playgroud)

用RC3 API重写这个的简单方法是什么?self.KVOController unobserve: self.site当视图卸载时,RC3等效于什么?

2)建议我使用Carthage来获取RC3代码.我可以混用一个Cartfile安全与使用可可豆荚已经为项目AlamofireSwiftyJSON

asl*_*nci 8

免责声明:) 我也是整个ReactiveCocoa概念的新手,尤其是RAC 3.我正在使用新框架来学习,所以我的解决方案可能不是API的预期用途.我很乐意收到其他人的反馈,并以正确的方式学习.

以下是我可以提出的第一个问题:您可以将您想要观察的属性定义为MutableProperty.下面是String属性的最基本示例.假设您有一个视图模型,它有一个String属性,您希望在视图控制器对象中观察它.

ViewModel.swift

class ViewModel {
    var testProp = MutableProperty<String>("")
}
Run Code Online (Sandbox Code Playgroud)

ViewController.swift

class ViewController: UIViewController {
    private let viewModel = ViewModel()

    override func viewDidLoad() {
        super.viewDidLoad()

        let testPropObserver = viewModel.testProp.producer
            testPropObserver.start(next: {value in
                println("new value \(value)")
            })

        viewModel.testProp.value = "you should see this in your log"
    }
}
Run Code Online (Sandbox Code Playgroud)


hha*_*and 2

对于第一个问题我只能引导你走向正确的方向。查看3.0 的更改日志,描述从 RACObserve() 到 PropertyTypes 的转变。它更明确一点,并且提供类型安全。是来源,我认为这是您了解如何实现它的最佳选择。您还可以查看他们的测试用例,看看他们是否为 PropertyType 协议构建了任何测试,并模仿他们的设置方式。

是的,您可以毫无困难地将 Carthage 和 CocoaPods 混合在一个项目中,因为 Carthage 的设计目的是尽量减少干扰。只要您按照他们网站上的说明进行操作,就应该没问题。