JSONとして送信されたWebサービスからのデータを保持するクラスを作成しようとしています。ここでAlamofireとSwiftyJSONを使用して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"
}
]
}
]
}
]
は、私が作成していたモデルクラスです
import Foundation
import SwiftyJSON
class Show: ResponseJSONObjectSerializable {
var name: String?
var description: String?
var host: String?
var guest: String?
var startTime: String?
var endTime: String?
var urlImage: String?
required init(json: JSON) {
self.name = json["textName"].string
self.description = json["textDescription"].string
self.host = json["textPresenter"].string
self.guest = json["textGuest"].string
self.startTime = json["timeStartHour"].string
self.endTime = json["timeEndHour"].string
self.urlImage = json["urlImage"].string
}
required init() {}
}
class ShowArray: ResponseJSONObjectSerializable {
var weekday: String?
var showArray: [Show]?
required init?(json: JSON) {
self.weekday = json["weekDay"].string
if let jsonArray = json["listening"].array {
self.showArray = []
for json in jsonArray {
let instance = Show(json: json)
self.showArray?.append(instance)
}
}
}
}
class ScheduleArray: ResponseJSONObjectSerializable {
var scheduleArray: [ShowArray]?
required init?(json: JSON) {
if let weekArray = json["weekSchedule"].array {
self.scheduleArray = []
for weekDay in weekArray {
let instance = ShowArray(json: weekDay)
self.scheduleArray?.append(instance!)
}
}
}
}
Alamofire機能はHTTPリクエストを作成する(ここで助けが必要!):ここで私は、サーバーから戻ってきてるJSONです:
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)
}
}
はその後、私のビューコントローラに私がショー
var listings = [Show]()
RCAPIManager.sharedInstance.getWeeklyShedule {
(result) in
guard result.error == nil else {
print("Error")
return
}
guard let fetchedSchedule = result.value else {
print("No schedule fetched")
return
}
self.listings = fetchedSchedule.scheduleArray ???
}
の配列にリストを保持する必要があります
これは私が立ち往生した場所です。リストからShowの配列にデータを格納するオブジェクトをループするにはどうしたらいいですか?
達成するために私のコードをリファクタリングするためのヒント予想される結果は、毎日の毎日の分割コントロールです。押されると、それを適切な情報を表示するフィルタとして使用します。
ありがとうございました!
あなたの注意のちょうどFYI。 NSURLSessionを使用してネットワークコードを記述し、データを適切なモデルに解析します。それらの変数を割り当てるモデルの検査と反映に頼るべきではありません。 Alamofireに必要な依存関係をすべて削除します。 – TheCodingArt
ヒント@TheCodingArtのおかげで、私はそれを試してみよう!しかし、私がなぜ私のためにAlamofireに頼ってはならないのか教えていただけますか? – acmobile
実際の利益/利得/理由のないライトラッパーとして依存関係を追加しています。それは本当に反パターンであり、路上の頭痛につながります。 – TheCodingArt