【问题标题】:Empty Data Getting After Json parsing in swift快速解析 Json 后获取空数据
【发布时间】:2017-08-24 19:10:38
【问题描述】:

我正在使用带有事件的日历,它工作正常,所有来自 JSON 的事件我可以解析存储在数组中的 JSON 数据,如果我可以显示 JSON 数组,它显示为空 滚动显示数据的日历 JSON 数组后, 这是代码

var EventsData = [Event]()

override func viewDidLoad() {
    super.viewDidLoad()
    getdairyDetails()
}

在 getdairyDetails() 中

if errorCode == "0" {

    if let event_list = jsonData["events"] as? NSArray {

        self.EventDates.removeAll()

        for i in 0 ..< event_list.count {

            if let event = event_list[i] as? NSDictionary {

                self.compareDate(date: (event["date"] as? String)!)

                self.EventsData.append(
                    Event(
                        eventId: event["eventId"] as? String,
                        eventName:event["details"] as? String,
                        eventDate: event["date"] as? String
                    )
                )
            }
        }
        self.do_refresh()
    }

如果我可以调用这个函数

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
    let dateString = self.dateFormatter2.string(from: date)
    print("this count first ",self.EventsData.count)
}


Result:
    this count first  0
    this count first  0
    this count first  0

After Scrolling the calender its showing 
    this count first  26
    this count first  26
    this count first  26

【问题讨论】:

  • 发布do_refresh()和完整方法getdairyDetails()
  • 您需要格式化此代码以使其清晰易读以进行调试。

标签: ios json swift swift3


【解决方案1】:

请试试这个代码

var  jsondarray = NSMutableArray()


override func viewDidLoad() {
    super.viewDidLoad()
    getdairyDetails()
}



func getdairyDetails()
{

    var userDic : [String : AnyObject] = [:]

    if errorCode == "0" {

        if let event_list = jsonData["events"] as? NSArray {


            for i in 0 ..< event_list.count {

                if let event = event_list[i] as? NSDictionary {

                    self.compareDate(date: (event["date"] as? String)!)

                    userDic = [
                        "eventId": event["eventId"] as? String,
                        "eventName":event["details"] as? String,
                        "eventDate": event["date"] as? String
                    ]

                    jsondarray.add(userDic)
               }
            }
        }

        self.do_refresh()
}

func calendar(_ calendar: FSCalendar, numberOfEventsFor date: Date) -> Int {
        let dateString = self.dateFormatter2.string(from: date)
        print("this count first ",self.jsondarray.count)
}

【讨论】:

  • 我可以在调试代码后尝试你的代码,让 task = session.dataTask(with:request,completionHandler:{(d,response,error) 在退出 func getdairyDetails()
  • 请在for循环完成后添加do_refresh函数
  • Tq Bro 植入do_refresh功能后工作正常
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 2014-10-14
相关资源
最近更新 更多