Ios 如何使用Alamofire和SwiftyJSON正确创建一个类来保存JSON中的数据

Ios 如何使用Alamofire和SwiftyJSON正确创建一个类来保存JSON中的数据,ios,json,swift,alamofire,swifty-json,Ios,Json,Swift,Alamofire,Swifty Json,我正试图创建一个类来保存来自以JSON形式发送的webservice的数据。下面是我从服务器返回的JSON: [ { "weekSchedule":[ { "weekDay":"sunday", "listening":[ { "textName":"Programa de teste 1", "textPresenter":"Apresentado

我正试图创建一个类来保存来自以JSON形式发送的webservice的数据。下面是我从服务器返回的JSON:

[  
  {  
    "weekSchedule":[  
      {  
        "weekDay":"sunday",
        "listening":[  
          {  
            "textName":"Programa de teste 1",
            "textPresenter":"Apresentador",
            "timeStartHour":"08:00:00",
            "timeEndHour":"23:59:00",
            "textDescription":"Descri\u00e7\u00e3o do programa ",
            "textGuest":"Dr. Lair Ribeiro",
            "urlImage":"file:\/\/servidor\/lampp\/webservice\/img\/happy.png"
          },
          {  
            "textName":"Teste 2",
            "textPresenter":"Teste",
            "timeStartHour":"00:00:00",
            "timeEndHour":"00:00:00",
            "textDescription":"",
            "textGuest":"",
            "urlImage":"file:\/\/servidor\/lampp\/webservice\/img\/happy.png"
          }
        ]
      },
      {  
        "weekDay":"monday",
        "listening":[  
          {  
            "textName":"Programa de teste 1",
            "textPresenter":"Apresentador",
            "timeStartHour":"08:00:00",
            "timeEndHour":"23:59:00",
            "textDescription":"Descri\u00e7\u00e3o do programa ",
            "textGuest":"Dr. Lair Ribeiro",
            "urlImage":"file:\/\/servidor\/lampp\/webservice\/img\/happy.png"
          },
          {  
            "textName":"Programa teste marco",
            "textPresenter":"Marco",
            "timeStartHour":"08:30:00",
            "timeEndHour":"09:30:00",
            "textDescription":"Apenas um programa para testar o json",
            "textGuest":"Jason",
            "urlImage":"file:\/\/servidor-ubuntu\/lampp\/webservice\/img\/happy.png"
          }
        ]
      }
    ]
  }
]
下面是我正在创建的模型类(这里需要帮助!)

Alamofire函数发出http请求:

func getWeeklyShedule(completionHandler: (Result<ScheduleArray, NSError>) -> Void) {

    alamofireManager.request(RCAppRouter.GetSchedule()).responseObject {
      (response: Response<ScheduleArray, NSError>) in

      guard response.result.isSuccess else {
        print("Error fetching schedule: \(response.result.error!)")
        return
      }

      completionHandler(response.result)
    }
  }
这就是我陷入困境的地方,我如何循环通过对象将列表中的数据存储到我的Show数组中

任何关于如何重构我的代码以实现的技巧,预期的结果是一周中的每一天都有一个分段控件,当按下时,我将使用它作为过滤器来显示适当的信息


谢谢

这可能不是最漂亮的方式,但会奏效的

if let responseArray = response as? NSArray {
    for i in 0..<responseArray.count {
    let showDic = responseArray[i] as! NSDictionary
    let dayOfWeek = showDic["weekday"] as! String
    let showArray = showDic["listening"] as! NSArray
        switch dayOfWeek {
        case "sunday":
           addShowObjectsToArray(showArray, dailyShows: sundayArray)
        case "monday":
           addShowObjectsToArray(showArray, dailyShows: mondayArray)
        case "tuesday":
           addShowObjectsToArray(showArray, dailyShows: tuesdayArray)
        case "wednseday":
           addShowObjectsToArray(showArray, dailyShows: wednsedayArray)
        case "thursday":
           addShowObjectsToArray(showArray, dailyShows: thursdayArray)
        case "friday":
           addShowObjectsToArray(showArray, dailyShows: fridayArray)
        case "saturday":
           addShowObjectsToArray(showArray, dailyShows: saturdayArray)
        default:
        }
    }

func addShowObjectsToArray(shows: NSArray, dailyShows: NSArray) {
    for show in shows {
        let showObject = Show(show)
        dailyShows.append(showObject)
    }
}
如果让responseArray=responseas?安萨雷{

因为我在0中通过改变三件事得到了我想要的东西:

func getWeeklyShedule(completionHandler: (Result<[ScheduleArray], NSError>) -> Void) {

    alamofireManager.request(RCAppRouter.GetSchedule()).responseArray {
      (response: Response<[ScheduleArray], NSError>) in

      guard response.result.isSuccess else {
        print("Error fetching schedule: \(response.result.error!)")
        return
      }

      completionHandler(response.result)
    }
  }
func GetWeeklySchedule(completionHandler:(结果)->Void){
alamofireManager.request(RCAppRouter.GetSchedule()).responseArray{
(回应:回应)在
guard response.result.isSuccess else{
打印(“获取计划时出错:\(response.result.Error!))
返回
}
completionHandler(response.result)
}
}
(结果)(结果)

.responseObject.responseArray


(回复:回复)(回复:回复)

仅供参考。使用NSURLSession编写网络代码,并自行将数据解析到适当的模型中。您不应该依靠对模型的检查和反思来为其分配变量。完全删除对Alamofire的必要依赖关系。谢谢@TheCodingArt的提示,我会尝试一下!但您能告诉我为什么我应该这样做吗I’我不会依赖Alamofire来做我的广告吗?你添加了一个依赖项作为一个轻薄的包装,没有任何真正的好处/收益/理由。这真的是一个反模式,并且会导致今后的头痛。再次感谢@TheCodingArt我会记住这一点。谢谢@brl214在摆弄了你的答案之后,我确实想出了我自己的问题。我喜欢swit的想法我想我一定会把它用在segcontrol上!@acmobile没问题!很高兴你找到了它!!
if let responseArray = response as? NSArray {
    for i in 0..<responseArray.count {
    let showDic = responseArray[i] as! NSDictionary
    let dayOfWeek = showDic["weekday"] as! String
    let showArray = showDic["listening"] as! NSArray
        switch dayOfWeek {
        case "sunday":
           addShowObjectsToArray(showArray, dailyShows: sundayArray)
        case "monday":
           addShowObjectsToArray(showArray, dailyShows: mondayArray)
        case "tuesday":
           addShowObjectsToArray(showArray, dailyShows: tuesdayArray)
        case "wednseday":
           addShowObjectsToArray(showArray, dailyShows: wednsedayArray)
        case "thursday":
           addShowObjectsToArray(showArray, dailyShows: thursdayArray)
        case "friday":
           addShowObjectsToArray(showArray, dailyShows: fridayArray)
        case "saturday":
           addShowObjectsToArray(showArray, dailyShows: saturdayArray)
        default:
        }
    }

func addShowObjectsToArray(shows: NSArray, dailyShows: NSArray) {
    for show in shows {
        let showObject = Show(show)
        dailyShows.append(showObject)
    }
}
func getWeeklyShedule(completionHandler: (Result<[ScheduleArray], NSError>) -> Void) {

    alamofireManager.request(RCAppRouter.GetSchedule()).responseArray {
      (response: Response<[ScheduleArray], NSError>) in

      guard response.result.isSuccess else {
        print("Error fetching schedule: \(response.result.error!)")
        return
      }

      completionHandler(response.result)
    }
  }