2016-12-12 7 views
0

さて、まず目標を説明しましょう。 Moyaから項目を取得し、realm Objectを使用して項目を適切にマップする構造を構築して、将来それらを保存しようとしています。すべての反応は、反応性を関連付けるためにrxswiftを使用して行う必要があります。ここでRxswift + Moya + Realm

は私の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に切り替えようとしましたが、配列をリストに変換する方法が見つかりませんでした 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) 
    } 
} 

私の研究に進行するすべてのヘルプは喜んでいただければ幸いです!おかげさまで

答えて

0

私は同じものを実装するためにこれらのポッドを使用して、私のために動作します。代わりにmapObjectOptionalの

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

使用

return Mapper<LoginResponse>().map(JSONObject: data) 
関連する問題