ios - RxSwift、MVVM、Alamofire/Moya。使用间隔更新股票代码

标签 ios swift mvvm reactive-programming

目前正在学习 RxSwift(一般为 Rx)。我想定期更新 UILabel 的最新股票价格。

.interval 和 updateTicker 如何在每个周期运行,然后相应地更新 UILabel。

ViewController.swift

class ViewController: UIViewController {
    private let disposeBag = DisposeBag()

    // Dependencies
    private var viewModel = ViewModel()

    // Outlets
    @IBOutlet var tickerLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        setupViewModel()
    }

    func setupViewModel() {        
        self.viewModel.ticker.asObservable()
        .bind(to: self.tickerLabel.rx.text)
        .addDisposableTo(self.disposeBag)
    }
}

ViewModel.swift

struct ViewModel {
    private let disposeBag = DisposeBag()

    let provider = RxMoyaProvider<StockAPI>()

    var ticker = Variable<String>("")

    init() {
        startTimer()
        // ???
    }


    func startTimer() -> Observable<Int> {
        return Observable<Int>.interval(5, scheduler: MainScheduler.instance)
    }

    func updateTicker() {
        _ = self.provider.request(.ticker(symbol: "AAPL")).subscribe { (event) in
        switch event {
        case .next(let response):
            print(response)
        // do something with the data
        case .error(let error):
            // handle the error
            print(error)
            break
        default:
            break
        }
    }
}

最佳答案

也许是这样的

var ticker = Observable.just("")

func startTimer() {
    self.ticker = Observable<Int>.interval(1, scheduler: MainScheduler.instance)
        .map({ _ in self.updateTicker() })
}

函数 updateTicker 将需要返回一个字符串。

关于ios - RxSwift、MVVM、Alamofire/Moya。使用间隔更新股票代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44710588/

相关文章:

ios - 使用 OSX 在 vi​​rtualbox 上运行 xcode

ios - UIPageViewController 显示黑屏

ios - 控制台输出中的 lldb 错误,无法获得正确的结果

ios - 根据时间 iOS Swift 在 UIBezierPath 上对 UIImageView 进行动画处理

c# - Winforms-Reactiveui 6.5 绑定(bind)到列表框

mvvm - 在 View 模型上测试RACCommand

iOS 在 UITableViewCell 中均匀间隔 5 个标签

ios - 如何删除不需要的按钮阴影

android - 如何获取 react-native WebView 的文本选择?

c# - 多个 WPF 控件使用的 WCF 双工服务