gpt4 book ai didi

ios - 如何使用 Swift 将 JSON 数据日期键值加载到 FSCalendar 事件数组中

转载 作者:行者123 更新时间:2023-11-29 05:26:10 25 4
gpt4 key购买 nike

就我而言,我有如下所示的 JSON 数据,现在我需要将 JSON date 键值加载到 FSCalendar 事件数组中。因此,基于 JSON 的日期事件将被添加到日历中。我几乎完成了 JSON codable 结构,解码,但我不知道如何将日期 key values 加载到数组并分配给日历事件。请帮我解决这个问题。

我的 JSON

{  
"status":true,
"data":[
{
"count":1,
"date":"23-09-2019"
},
{
"count":2,
"date":"22-09-2019"
}
]
}

我的可编码结构

struct Calendars: Codable {
let status: Bool
let data: [Cdata]
}

struct Cdata: Codable {
let count: Int
let date: String
}

我的 FSCalendar 代码

如何将我的 JSON 日期和计数键值分配到下面的方法中。

    // MARK Calendar Data Fetch

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
let dateString = self.dateFormatter.string(from: date)
if self.calendarsData.date.contains(dateString) { // Here how to assign JSON date values?
return 1 // Here, How to assign JSON count key value?
}
return 0
}

JSON 数据加载

//var datesWithEvent = ["02-09-2019", "03-09-2019", "07-09-2019", "09-09-2019"] Instead this I need to use `calendarsData` array
var calendarsData = [Cdata]() // Global Declaration Array For Date and Count Key Value

// MARK: JSON Data Load - Calendar Data

func loadCalendarsJSON(){
let urlPath = "https://api.myjson.com/bins/9gq0h"
let url = NSURL(string: urlPath)
let session = URLSession.shared
let task = session.dataTask(with: url! as URL) { data, response, error in
guard data != nil && error == nil else {
print(error!.localizedDescription)
return
}
do {
let decoder = try JSONDecoder().decode(Calendars.self, from: data!)
let status = decoder.status
if status == true {
self.calendarsData = decoder.data
DispatchQueue.main.async {
//self.calendar.reloadData()
}
} else {

}
} catch { print(error) }
}
task.resume()
}

最佳答案

当我查看您发布的代码时,如果一个日期中有多个事件,您将返回 3 个事件,但有时您的 dateArray 的事件数可能少于 3 个。如果小于 3,则返回 3 或 dateArray 长度。请查看datesWithMultipleEvents 的唯一变化。

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
let dateString = self.dateFormatter.string(from: date)
if self.datesWithEvent.contains(dateString) { // Here need to fetch date array
return 1
}
if self.datesWithMultipleEvents.contains(dateString) {
return min(3, datesWithMultipleEvents.count)
}
return 0
}

希望!会有帮助的。

关于ios - 如何使用 Swift 将 JSON 数据日期键值加载到 FSCalendar 事件数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com