简体   繁体   中英

How to create JSON format from Realm “Results” using Object Mapper

I try to create JSON format from Realm Results using Object Mapper. So, I created two generic methods to do that. Fisrt method create array form Results and looks like that:

var allRealmData: Results<Project>?    // in this variable I save all Project Objects first

func makeAnArrayFromResults<T>(object: T.Type) -> [T]?{
    var array = [T]()
    guard let mainArray = allRealmData else { return nil }
    for i in mainArray {
        if let object = i as? T {
            array.append(object)
        }
    }
    return array
} 

then I would like to use Object Mapper to change this array to JSON Object, but when I try do it, I receive an error and don't know how can I resolve it. My second method looks like that:

func createJSON<T: Object>(object: T.Type){
    let array = makeAnArrayFromResults(object)
    let json = Mapper().toJSONString(array!, prettyPrint: true) //here error
}

error info: Cannot invoke "toJSONString" with an argument list of type"([T], prettyPrint: Bool)".

Do you have any sugestions how can I create JSON from Result in Realm?

Firstly, makeAnArrayFromResults<T> is really just map :

let someRealmResults: Results<Project>?
...
let array = someRealmResults?.map { $0 } // => [Project]?

As far as the Object Mapper integration goes, it looks like you don't have a toJSONString function defined that satisfies the first argument type constraints of [Person] .

There's quite a bit of discussion in Object Mapper's issue tracker about interoperability with Realm that you may find useful: https://github.com/Hearst-DD/ObjectMapper/issues/475

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM