Swagger Codegen で自動生成したクライアントSDKを使う(RxSwift 編)
Swagger Codegen で自動生成したクライアントSDKを使う(RxSwift 編)
前回 Swagger Codegen にて自動生成したクライアントを使って、今後は RxSwift を用いたデータバインディングを試してみる。
実装
ファイル生成はできているし、必要なパッケージのインストールもできているので実装から入る。
最低限ワンパスの動作を確認する。
UserViewModel
import Foundation import RxSwift final class UserViewModel { let users: Variable<[User]> = Variable([User]()) private var disposeBag = DisposeBag() func fetchUsers() { disposeBag = DisposeBag() UsersAPI.getApiV1Users() .subscribe(onNext: { [unowned self] users in self.users.value += users }) .addDisposableTo(disposeBag) } }
ViewController.swift
import UIKit import RxSwift import RxCocoa class ViewController: UIViewController { fileprivate let viewModel = UserViewModel() private let disposeBag = DisposeBag() @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. configureObserver() viewModel.fetchUsers() } private func configureObserver() { SampleAppClientAPI.customHeaders["Authorization"] = "Bearer 9fa9995a17c5849083890b3ee0ef5fbd3fe1b93036b16eefe1149ac34387cc0d" tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell") viewModel.users.asDriver().drive( tableView.rx.items(cellIdentifier: "Cell"), curriedArgument: { _, user, cell in cell.textLabel?.text = user.name cell.detailTextLabel?.text = user.email }) .addDisposableTo(disposeBag) } }
いけるいける、いい感じである。
今回実装した内容は以下に。
kfurue/rails-tutorial-ios at mvvm
その他
あとは Android 側でも自動生成したクライアント SDK を動作させてみようと思う。