ios – ReactiveCocoa rac_valuesForKeyPath在Swift中不起作用

ios – ReactiveCocoa rac_valuesForKeyPath在Swift中不起作用,第1张

概述我正在尝试在我用 Swift编写的iOS应用程序中采用ReactiveCocoa.不幸的是,看起来rac_valuesForKeyPath不能按预期工作. 这是一个例子: class Source: NSObject { var observable: String = "<Original>" override init() { super.init() 我正在尝试在我用 Swift编写的iOS应用程序中采用ReactiveCocoa.不幸的是,看起来rac_valuesForKeyPath不能按预期工作.
这是一个例子:
class Source: NSObject {    var observable: String = "<Original>"    overrIDe init() {        super.init()        dispatch_after(dispatch_time(disPATCH_TIME_Now,Int64(1 * NSEC_PER_SEC)),dispatch_get_main_queue(),{ () -> VoID in            self.observable = "<Updated>"            println("Updated value to \(self.observable)");        })    }}class Observer: NSObject {    init(source: Source) {        super.init()        source.rac_valuesForKeyPath("observable",observer: self).subscribeNext { (value: AnyObject!) -> VoID in            println(">>> Observable value changed: \(value)")        }    }}

该示例生成以下输出:

>>> Observable value changed: <Original>Updated value to <Updated>

这意味着未调用subcribeNext块.

预期的输入是:

>>> Observable value changed: <Original>Updated value to <Updated>>>> Observable value changed: <Updated>

任何线索如何解决问题?

解决方法 可观察性需要是动态的

我让您的示例使用以下代码

class Source: NSObject {  dynamic var string:String = "Initial Value"  overrIDe init() {    super.init()  }}class Observer: NSObject {  init(source:Source) {    super.init()    source.rac_valuesForKeyPath("string",observer: self).subscribeNext { (newVal:AnyObject!) -> VoID in      println(newVal)    }  }}class VIEwController: UIVIEwController {  var source:Source!  var obs:Observer!  overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    source = Source()    obs = Observer(source: source)    source.string = "Another Value"  }}
总结

以上是内存溢出为你收集整理的ios – ReactiveCocoa rac_valuesForKeyPath在Swift中不起作用全部内容,希望文章能够帮你解决ios – ReactiveCocoa rac_valuesForKeyPath在Swift中不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1114646.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存