我正在尝试将使用 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];
}];

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

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

最佳答案

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

对于你的第一个问题,我可以想出以下几点:
您可以将要观察的属性定义为 MutableProperty。下面是带有 String 属性的最基本示例。假设你有一个 View 模型,它有一个 String 属性,你想在你的 View Controller 对象中观察它。

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

关于swift - 我可以/如何用 RC3 替换我的 KVO 东西?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29956622/

10-14 16:54
查看更多