【发布时间】:2015-12-02 06:52:02
【问题描述】:
我正在开发我的应用程序的登录部分,我想使用 ReactiveCocoa 4。:)
这是我认为的初始化:
self.viewModel.loginSignal = self.LoginButton.rac_signalForControlEvents(UIControlEvents.TouchUpInside)!
self.viewModel.loginStatus.producer.startWithNext({ status in
self.setLoginButtonStatus(status)
})
self.viewModel.initSignals()
setLoginButtonStatus 只会禁用/启用按钮等,而status 只是一个枚举。
这是在我的视图模型的initSignals()
self.loginSignal!.toSignalProducer().start({ sender in
self.validateLoginInput()
})
其中loginSignal 被声明为var loginSignal: RACSignal?。
这是我的validateLoginInput
self.loginStatus.value = MyStatus.Login.IN_PROGRESS // So button would be disabled
session.rac_dataWithRequest(request).map({ data, response in
return MyResponse(data, response)
}).startWithNext({ response
// Say MyResponse class would check the reponse if login is successful
if response.isSuccessful() {
self.loginStatus.value = MyStatus.Login.SUCCESS
} else {
self.loginStatus.value = MyStatus.Login.FAIL
}
})
视图应该首先禁用按钮,然后在会话结束和response.isSuccessful() 为真时重新启用它。
好吧,它现在可以工作,但我想知道我是否正在适当地使用带有 ReactCocoa 4 的 MVVM。
另外,我收到了一个让我有点困扰的“警告”。这看起来就像 HTTP 请求得到响应后的一秒钟。
2015-12-02 12:15:32.566 MyProject[460:48610] This application is
modifying the autolayout engine from a background thread, which can
lead to engine corruption and weird crashes. This will cause an
exception in a future release.
是因为我在Swift 2.1 上使用了v4.0.0-alpha.4?这实际上延迟了我的按钮的重新启用。
我对网络上的示例感到困惑,因为它们中的大多数都在 Objective-C 中,而且我认为某些函数名称已更改,等等...
非常感谢!
【问题讨论】:
标签: swift mvvm swift2 ios9 reactive-cocoa