0

さて、最初に私の目標を説明しましょう。Moya からアイテムを取得し、レルム オブジェクトを使用してアイテムを適切にマップし、将来それらを保存するための構造を構築しようとしています。反応性を関連付けるために、rxswift を使用してすべてのことを行う必要があります。

ここに私の2つのクラスがあります:

import Foundation
import ObjectMapper
import RealmSwift

final class GroupContainer: Mappable {

    private(set) var items = List<Group>()

    required convenience init?(map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        items <- (map["items"], transformation: RealmListTransform<Group>())

    }
}
import Foundation
import RealmSwift
import ObjectMapper

final class Group: Object, Mappable {

    private(set) dynamic var tag: String = ""
    private(set) dynamic var name: String = ""
    private(set) dynamic var groupLevel: Int = 0
    private(set) dynamic var groupPoints: Int = 0
    private(set) dynamic var members: Int = 0

    required convenience init?(map: Map) {
        self.init()
    }

    func mapping(map: Map) {
        tag <- map["tag"]
        name <- map["name"]
        clanLevel <- map["groupLevel"]
        clanPoints <- map["groupPoints"]
        members <- map["members"]
    }
}

そして、これが私のデータを取得して解析するためのサンプル構造体です。これは RxMoya によって提供された例です。ただし、ObjectMapper を使用するためにmapObjectOptionnalメソッドを使用することはできません。代わりにモデルを ModelMapper に切り替えようとしましたが、配列を List に変換する方法が見つかりませんでした。またmapObjectOptionnal、mapArray、mapObject などの代替を見つけようとしましたが、何らかの理由で、作成後に直接それらを使用することはできませんリクエスト。

import Moya
import Moya_ObjectMapper
import RxOptional
import RxSwift

struct TempFetcher {
  let provider = RxMoyaProvider<APIService>()
  let groupName = Observable<String>

    func trackGroup() -> Observable<[Group]> {
        return self.groupName.observeOn(MainScheduler.instance)
                    .flatMapLatest { search -> Observable<GroupContainer> in
                            return self.findGroup(name: search)
                    }
                    .flatMapLatest { container -> Observable<[Group]> in
                            return Observable<[Group]>.just(container.items)
                    }
    }

    private func findGroup(name: String) -> Observable<GroupContainer?> {
        return self.provider
            .request(APIService.Group(fullName: name))
            .debug()
            .mapObjectOptional(type: Repository.self)
    }
}

私の研究を進めるための助けをいただければ幸いです!! ありがとう。

4

1 に答える 1

0

これらのポッドを使用して同じものを実装すると、組み合わせが機能します。

pod 'Moya/RxSwift'
pod 'Moya-ObjectMapper/RxSwift'
pod 'ObjectMapper+Realm'

mapObjectOptional の使用の代わりに

  return Mapper<LoginResponse>().map(JSONObject: data)
于 2017-08-14T04:11:40.410 に答える