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

时间:2015-04-29 23:50:22

标签: swift key-value-observing reactive-cocoa carthage reactive-cocoa-3

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

1)给出[self.KVOController observe: self.site keyPath: @"programs" options: NSKeyValueObservingOptionInitial block:^(id observer, id object, NSDictionary *change) { [self.tableView reloadData]; }]; 片段,如:

self.KVOController unobserve: self.site

用RC3 API重写这个的简单方法是什么?当视图卸载时,Cartfile的RC3等价物是什么?

2)建议我使用Carthage来获取RC3代码。我可以安全地将Alamofire与已经用于SwiftyJSON和{{1}}的可可豆荚的项目混合使用吗?

2 个答案:

答案 0 :(得分:8)

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

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

<强> ViewModel.swift

class ViewModel {
    var testProp = MutableProperty<String>("")
}

<强> 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"
    }
}

答案 1 :(得分:2)

对于第一个问题,我只能引导你朝着正确的方向前进。看一下描述从RACObserve()转移到PropertyTypes的变化log to 3.0。它更加明确,它提供了类型安全性。 Here是来源,我认为这是确定如何实施它的最佳选择。您还可以查看他们的测试用例,看看他们是否为PropertyType协议构建了任何测试,并模仿他们如何设置它。

是的,你可以毫不费力地将迦太基和CocoaPods混合在一个项目中,因为迦太基的设计是极少侵入性的。只要你按照他们网站上的说明你就可以了。