【问题标题】:Creating Model using Swifty JSon Model使用 Swifty JSON 模型创建模型
【发布时间】:2017-07-06 07:32:22
【问题描述】:
[
    {
        "_id": "1212323",
        "row": 1,
        "column": 1,
        "displayType": 0,
        "item": {
            "type": "category_",
            "data": {
                "_id": "595a1446cb91951900b0b4b0",
                "title": "something",
                "fullImage": "http://assets.something.mobi/curated/something (2).jpg",
                "halfImage": "http://assets.something.mobi/curated/something (1).jpg"
            }
        }
    },
    {
        "_id": "595a148ccb91951900b0b4b5",
        "row": 2,
        "column": 1,
        "displayType": 1,
        "item": {
            "type": "curatedlist",
            "data": {
                "_id": "595b34abcb9195190c0ae378",
                "active": "true",
                "title": "sample something list",
                "fullImage": "http://assets.something.mobi/curated/something (2).jpg",
                "halfImage": "http://assets.something.mobi/curated/something (2).jpg"
            }
        }
    }
]

对于 SwiftyJSON 和 Alamofire 来说非常新,有人请帮我创建一个模型,因为我可以使用 almofire 获得 JSON 响应,但无法为此创建适当的 swifty json 模型

【问题讨论】:

标签: json swift3 swifty-json


【解决方案1】:

我使用两个单独的模型类来完成此操作,一个用于直接映射所有值,另一个用于直接从其中获取数组。

对于刚开始或坚持创建模型和映射值的人可以尝试这些,或者专家可以提出更好的解决方案来改进实施

1.CategoryModel:NSObject

    import UIKit
    import SwiftyJSON

    class CategoryModel: NSObject {
        var resultArray : NSArray!
        var _id : String!
        var row : NSInteger!
        var column : NSInteger!
        var displayType : NSInteger!

        var type : String?

        var _id1 : String?
        var title : String?
        var fullImage : String?
        var halfImage : String?
        // var item


        required init(JsonDashBoard: JSON) {

            _id = JsonDashBoard["_id"].stringValue
            row = JsonDashBoard["row"].intValue
            column = JsonDashBoard["column"].intValue
            displayType = JsonDashBoard["displayType"].intValue

            //MARK:- Inside Item Dictionary
            type = JsonDashBoard["item"]["type"].stringValue
            //MARK:- Inside Item/dataDictionary
            _id1 = JsonDashBoard["item"]["data"]["_id"].stringValue
            title = JsonDashBoard["item"]["data"]["title"].stringValue
            fullImage = JsonDashBoard["item"]["data"]["fullWidthImage"].stringValue
            halfImage = JsonDashBoard["item"]["data"]["halfWidthImage"].stringValue

        }
    }

2.CategoryListModel:NSObject

  import UIKit

    class CategoryListModel: NSObject {
        var items : NSArray? = nil;
        required init(_items: NSMutableArray) {
            self.items = _items
        }
    }

使用这些模型类,您可以使用以下代码片段映射值

manager.request(routeUrl, method: .get).responseJSON { (responseObject) -> Void in

        if responseObject.result.isSuccess {
            let resJson = JSON(responseObject.result.value!)
            let categoryList = NSMutableArray()
            for (_,subJson):(String, JSON) in resJson {

                let model = CategoryModel(JsonDashBoard: subJson)
                categoryList.add(model)
                //Do something you want
                print(subJson)

            }
            let categoryListModel = CategoryListModel(_items: categoryList)
            success(categoryListModel)


        }
        if responseObject.result.isFailure {
            let error : Error = responseObject.result.error!
            failure(error)
        }


    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2015-05-20
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多