来自对象的 JSON 与 iOS Swift 3 中的数组问题

public class LessonAssignment {

    private var title : String?
    private var category : String?
    private var week : Int?
    private var day : Int?


    //Title
    public func getTitle() -> String {
        return title!
    }

    public func setTitle(title : String) {
        self.title = title
    }

    //Category
    public func getCategory() -> String {
        return category!
    }

    public func setCategory(category : String) {
        self.category = category
    }

    //Week
    public func getWeek() -> Int {
        return week!
    }

    public func setWeek(week : Int) {
        self.week = week
    }

    //Day
    public func getDay() -> Int {
        return day!
    }

    public func setDay(day : Int) {
        self.day = day
    }

/**
    Returns an array of models based on given dictionary.

    Sample usage:
    let lessonAssignment_list = LessonAssignment.modelsFromDictionaryArray(someDictionaryArrayFromJSON)

    - parameter array:  NSArray from JSON dictionary.

    - returns: Array of LessonAssignment Instances.
*/
    public class func modelsFromDictionaryArray(array:NSArray) -> [LessonAssignment]
    {
        var models = [LessonAssignment]()
        for item in array {
            models.append(LessonAssignment(dictionary: item as! NSDictionary)!)
        }
        return models
    }

/**
    Constructs the object based on the given dictionary.

    Sample usage:
    let lessonAssignment = LessonAssignment(someDictionaryFromJSON)

    - parameter dictionary:  NSDictionary from JSON.

    - returns: LessonAssignment Instance.
*/
     init() { }

    required public init?(dictionary: NSDictionary) {

        title = dictionary["title"] as? String
        category = dictionary["category"] as? String
        week = dictionary["week"] as? Int
        day = dictionary["day"] as? Int
    }


/**
    Returns the dictionary representation for the current instance.

    - returns: NSDictionary.
*/
    public func dictionaryRepresentation() -> NSDictionary {

        let dictionary = NSMutableDictionary()

        dictionary.setValue(self.title, forKey: "title")
        dictionary.setValue(self.category, forKey: "category")
        dictionary.setValue(self.week, forKey: "week")
        dictionary.setValue(self.day, forKey: "day")

        return dictionary
    }

    func toDictionary() -> [String : Any] {
        var dictionary = [String:Any]()
        let otherSelf = Mirror(reflecting: self)

        for child in otherSelf.children {
            if let key = child.label {
                dictionary[key] = child.value
            }
        }
        return dictionary
    }
}



public class LessonPlan {
    private var name : String?
    private var weeks : Int?
    private var days : Int?
    private var hours : Int?
    private var lessonAssignment = [LessonAssignment]()
    private var lessonNote = [LessonNote]()


    //Name
    public func getName() -> String {
        if name == nil {
            return ""
        } else {
            return name!
        }
    }

    public func setName(name : String) {
        self.name = name
    }

    //Weeks
    public func getWeeks() -> Int {
        if weeks == 0 {
            return 0
        } else {
            return weeks!
        }
    }

    public func setWeeks(weeks : Int) {
        self.weeks = weeks
    }

    //Days
    public func getDays() -> Int {
        if days == 0 {
            return 0
        } else {
            return days!
        }
    }

    public func setDays(days : Int) {
        self.days = days
    }

    //Hours
    public func getHours() -> Int {
        if days == 0 {
            return 0
        } else {
            return hours!
        }
    }

    public func setHours(hours : Int) {
        self.hours = hours
    }

    //LessonAssignment
    public func getLessonAssignment() -> [LessonAssignment] {
        return lessonAssignment
    }

    public func setLessonAssignment(lessonAssignment : [LessonAssignment]) {
        self.lessonAssignment = lessonAssignment
    }

    //LessonNote
    public func getLessonNote() -> [LessonNote] {
        return lessonNote
    }

    public func setLessonNote(lessonNote : [LessonNote]) {
        self.lessonNote = lessonNote
    }


/**
    Returns an array of models based on given dictionary.

    Sample usage:
    let lessonPlan_list = LessonPlan.modelsFromDictionaryArray(someDictionaryArrayFromJSON)

    - parameter array:  NSArray from JSON dictionary.

    - returns: Array of LessonPlan Instances.
*/
    public class func modelsFromDictionaryArray(array:NSArray) -> [LessonPlan]
    {
        var models:[LessonPlan] = []
        for item in array
        {
            models.append(LessonPlan(dictionary: item as! NSDictionary)!)
        }
        return models
    }

/**
    Constructs the object based on the given dictionary.

    Sample usage:
    let lessonPlan = LessonPlan(someDictionaryFromJSON)

    - parameter dictionary:  NSDictionary from JSON.

    - returns: LessonPlan Instance.
*/
     init() { }

    required public init?(dictionary: NSDictionary) {

        name = dictionary["name"] as? String
        weeks = dictionary["weeks"] as? Int
        days = dictionary["days"] as? Int
        hours = dictionary["hours"] as? Int

        lessonAssignment = LessonAssignment.modelsFromDictionaryArray(array:dictionary["lessonAssignment"] as! NSArray)

        lessonNote = LessonNote.modelsFromDictionaryArray(array: dictionary["lessonNote"] as! NSArray)
    }


/**
    Returns the dictionary representation for the current instance.

    - returns: NSDictionary.
*/
    public func dictionaryRepresentation() -> NSDictionary {
        let dictionary = NSMutableDictionary()
        dictionary.setValue(self.name, forKey: "name")
        dictionary.setValue(self.weeks, forKey: "weeks")
        dictionary.setValue(self.days, forKey: "days")
        dictionary.setValue(self.hours, forKey: "hours")
        return dictionary
    }

    func toDictionary() -> [String : Any] {
        var dictionary = [String:Any]()
        let otherSelf = Mirror(reflecting: self)

        for child in otherSelf.children {
            print("Child = \(child)")
            print("Child Label = \(String(describing: child.label))")
            print("Child Value = \(child.value)")

            if let key = child.label {
                 dictionary[key] = child.value
            }
        }
        return dictionary
    }
}

公共类服务器请求{

private var lessonPlan : LessonPlan?

init() {
}

//LessonPlan
public func getLessonPlan() -> LessonPlan {
    return lessonPlan!
}

public func setLessonPlan(lessonPlan : LessonPlan) {
    self.lessonPlan = lessonPlan
}

func toDictionary() -> [String : Any] {
    var dictionary = [String:Any]()
    let otherSelf = Mirror(reflecting: self)

    for child in otherSelf.children {
        if let key = child.label {
            dictionary[key] = lessonPlan?.toDictionary()
        }
    }
    return dictionary
}

}

当前响应 = ["lessonPlan": ["name": "test", "days": 2, "weeks": 1, "hours": 1, "lessonAssignment": [HSP.LessonAssignment, HSP.LessonAssignment] , "课注": []]]

预期响应= ["lessonPlan": ["name": "test", "days": 2, "weeks": 1, "hours": 1, "lessonAssignment": [["title": "some value 1" , "category" : "some value", "week" : 1, "day" : 2]], "lessonNote": []]]

我想添加数组的实际值而不是 LessinAssignment 对象。任何线索如何解决这个问题。我知道我必须在 toDictionary 方法中添加更多逻辑,并且基于键“lessonAssignment”,我必须获取每个数组并将键中的值添加为最终数组。

克里斯

从我的评论来看,是这样的:

assignments.map({
  (value: HSP.LessonAssignment) -> NSDictionary in
  return value.toDictionary()
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JSON到领域对象映射问题iOS Swift

来自分类Dev

如何在 ios Swift 3 中从模型创建 JSON

来自分类Dev

iOS Swift 3 POST 问题

来自分类Dev

iOS Swift 3 发布问题

来自分类Dev

覆盖数组Swift iOS中的旧对象

来自分类Dev

来自 json 对象的 swift PUT API

来自分类Dev

来自 JSON 对象的 JSON 数组返回 null

来自分类Dev

在Swift 3中将JSON对象解析为NSArray

来自分类Dev

如何在 Alamofire 请求 swift 3 中传递 JSON 对象

来自分类Dev

如何限制iOS / Swift3中来自EstimoteSDK的多个通知?

来自分类Dev

iOS - 在 swift 3 中打印和存储字典数组

来自分类Dev

Swift 3 - iOS 11.2 上的 UICollectionview 问题

来自分类Dev

(iOS)在数组中添加来自json的数据

来自分类Dev

来自javascript嵌套数组的json对象

来自分类Dev

使用数组根对象在Swift中解析JSON数组

来自分类Dev

来自json响应的Swift iOS动态标签栏

来自分类Dev

Swift 3中的JSON解析

来自分类Dev

Alamofire POST方法中的POST对象数组-Swift / IOS

来自分类Dev

ios Swift:如何比较可变数组中存在的对象

来自分类Dev

ios Swift:如何比较可变数组中存在的对象

来自分类Dev

对象未添加到数组中-Swift iOS

来自分类Dev

使用 AlamofireObjectMapper/ObjectMapper 从数组对象中获取值(swift - iOS)

来自分类Dev

在 Swift3 iOS 中使用字符串参数对对象数组进行排序

来自分类Dev

从 JSON、Swift3 访问对象属性

来自分类Dev

如何以正确的方式在 IOS SWIFT 3 中解析 Google Distance Matrix API JSON

来自分类Dev

在 Swift 3 中更改来自 JSON url 的数据的行高

来自分类Dev

在Swift / iOS中解析JSON响应

来自分类Dev

Swift iOS中的JSON序列化

来自分类Dev

swift中范围问题的3d数组

Related 相关文章

热门标签

归档