好的,让我们先解释一下我的目标。 我正在尝试构建一个结构来从Moya中获取项目,并使用realm Object正确映射我的项目,以便将来保存它们。应该使用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)
}
}
欢迎任何有助于我的研究进展的帮助!! 感谢。
答案 0 :(得分:0)
我使用这些pod来实现相同的功能,这种组合适用于我。
pod 'Moya/RxSwift'
pod 'Moya-ObjectMapper/RxSwift'
pod 'ObjectMapper+Realm'
而不是mapObjectOptional使用
return Mapper<LoginResponse>().map(JSONObject: data)