swift Model by ObjectMapper

3795 ワード

前言
ObjectMapperは、Swfit言語に基づいてJSONとModel間の相互回転を実現するサードパーティのオープンソースクラスライブラリgit転送ゲートです.https://github.com/Hearst-DD/ObjectMapper
ps:使用するたびにObjectMapperのモデルを手動で生成してdecode JSONデータを作成する必要があり、面倒なので、自分で簡単なmodel code印刷ツール類を書きました
JSON model print helper
ModelPrint_という名前を生成Zのツールクラスは、このツールの使用手順tipを含む
import UIKit

//  tip:
//1、    swift  ,     SwiftModelName
//2、      ,     ModelPrint_Z.PrintByString(dict_str: jsonString, name: "SwiftModelName")
//3、run the project,           model      
//4、copy     
//5、parse SwiftModelName model  (    model      )

class ModelPrint_Z{
    
    //dict_str model   json string
    //name model   
    static func PrintByString(dict_str:NSString,name:NSString){
        let dict=self.dictionaryWithJosnString(jsonString: dict_str)
        if (dict != nil) {
            print("




import UIKit
import ObjectMapper
") self.Print(dict: dict!, name: name) }else{ print("error:json !") } } //dict json //name model static func Print(dict:NSDictionary,name:NSString){ //model code string var var_str:String="" var var_mapping:String="" dict.enumerateKeysAndObjects({ (key, obj, stop) in let key_str=key as! String var_mapping.append("
"+key_str+" 0{ self.Print(dict: arr[0] as! NSDictionary,name: (name as String)+"List" as NSString) } default: var_str.append("
var "+key_str+" : "+"Any?") } }) var_str="class "+(name as String)+": Mappable {
"+var_str+"

public required init?(map: Map) {
mapping(map: map)
}" var_mapping="
func mapping(map: Map) {"+var_mapping+"
}
}" //model code str print("


"+var_str+"
"+var_mapping) } // //string dictionaryWithJosnString static func dictionaryWithJosnString(jsonString:NSString)->NSDictionary?{ let jsonData:Data=jsonString.data(using: String.Encoding.utf8.rawValue)! if jsonData.isEmpty { return nil }else{ do { let jsonResult = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.mutableContainers) return jsonResult as? NSDictionary } catch { return nil } } } }

Model code印刷の呼び出し
import ObjectMapper

//model      
ModelPrint_Z.PrintByString(dict_str: JSONStr name: "AdModel")

//  Mapper   model
let temperature = Mapper().map(JSONString: JSONStr as String)

生成されたモデルの例,モデル生成はObjectMapperによるモデルルールである.
import UIKit
import ObjectMapper

class AdModelList: Mappable {
    
    var relation_id : Int?
    var id : Int?
    var image_url : String?
    var title : String?
    var link_url : String?
    var relation_type : Int?
    var relative_url : String?
    
    public required init?(map: Map) {
        mapping(map: map)
    }
    
    func mapping(map: Map) {
        relation_id 

ObjectMapper使用手順
1、ObjectMapperでmodel 2を生成し、ObjectMapperを呼び出すdecodeメソッドを以下のようにすればよい.
let temperature = Mapper().map(JSONString: JSONStr as String)

まとめ
初めてこの印刷方式を使ってモデルを生成するのを助けて、もし学生たちがもっと良い方法でモデルを生成するならば、一緒に交流することを歓迎します:p