2015-07-12 31 views
0

我认为这是很好的,如果代码是接口驱动器
所以如何使ReactiveCocoa协议在swift工作? 例如斯威夫特,是否有可能使ReactiveCocoa协议工作

protocol SomeBody { 
    var name: String { get set } 
} 
... 
class XXViewController { 
    @IBOutlet weak var someLabel:UILabel! 
    var someOne: SomeBody { 
     didSet { 
      RACObserve(someOne, "name").subscribeNext { [weak self](name) -> Void in 
       self?.someLabel.text = name as! String 
      } 
     } 
    } 
    .... 
} 

回答

2

RACObserve是建立在国际志愿者组织的顶部,所以它的工作name需要被键值观察的。 Swift中的对象默认不符合KVO标准。

您可以通过从NSObject继承补充志愿合规性:

class Foo : NSObject, SomeBody { 
    var name: String = "" 
} 

或进行个人财产观察到:

class Foo : SomeBody { 
    dynamic var name: String = "" 
} 

据我所知,没有办法以执行协议定义这种行为,只能支持它在各个实现中。