首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rxswift + Moya + Realm

Rxswift + Moya + Realm
EN

Stack Overflow用户
提问于 2016-12-13 07:30:59
回答 1查看 1.1K关注 0票数 0

好的,让我们先解释一下我的目标。我正在尝试构建一个结构来从Moya获取项目,并使用realm对象正确地映射我的项目,以便在将来保存它们。所有这些都应该使用rxswift来完成,以便获得关联的反应性。

下面是我的两个类:

代码语言:javascript
复制
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>())

    }
}
代码语言:javascript
复制
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,但由于某些原因,我不能在发出请求后直接使用它们。

代码语言:javascript
复制
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)
    }
}

对我的研究进展的任何帮助都将非常感谢!谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-08-14 12:11:40

我用这些pod来实现同样的方法,这个组合对我来说是有效的。

代码语言:javascript
复制
pod 'Moya/RxSwift'
pod 'Moya-ObjectMapper/RxSwift'
pod 'ObjectMapper+Realm'

不使用mapObjectOptional

代码语言:javascript
复制
  return Mapper<LoginResponse>().map(JSONObject: data)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41111427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档