Ios 如何从json按日期对帖子排序

Ios 如何从json按日期对帖子排序,ios,sorting,swift3,Ios,Sorting,Swift3,注意:为了使代码更具可读性,必须在此处添加文本,以便系统可以接受编辑: 我的json数据是: [ { "language": "en", "polarity": 10, "rating": "", "source": "Facebook", "text": "FortyLove Sport Centers likes a photo.", "time": "2013-06-02", "wordsCount"

注意:为了使代码更具可读性,必须在此处添加文本,以便系统可以接受编辑:

我的json数据是:

[
   {
      "language": "en",
      "polarity": 10,
      "rating": "",
      "source": "Facebook",
      "text": "FortyLove Sport Centers likes a photo.",
      "time": "2013-06-02",
      "wordsCount": 6,
      "details": "http://tour-pedia.org/api/getReviewDetails?    id=53513431ae9eef9405b2f18c"

   },
   {
      "language": "en",
      "polarity": 10,
      "rating": "",
      "source": "Facebook",
      "text": "FortyLove Sport Centers likes a status.",
      "time": "2013-05-26",
      "wordsCount": 6,
      "details": "http://tour-pedia.org/api/getReviewDetails?id=53513431ae9eef9405b2f18d"
   }
]
我的源代码是

let task = URLSession.shared.dataTask(with: URL(string: "http://tour-pedia.org/api/getReviews?location=Rome&category=poi")!) { (data, response , error) in
if error != nil {
    print(error?.localizedDescription ?? "")
}
if let resultArray = (try? JSONSerialization.jsonObject(with: data!, options: [])) as? [[String:Any]] {
        for jsonreviews in resultArray {
            let review = Review()
            review.rating = jsonreviews["rating"] as? Int ?? 0
            review.text = jsonreviews["text"] as! String
            review.time = jsonreviews["time"] as! String
            reviews.append(review)
        }
        DispatchQueue.main.async {
        self.tableview.reloadData()   // if you use tableview
        }
    }
}
task.resume()

我不知道如何按日期排序,请帮助我编写代码

您应该对API调用的响应进行建模,然后对建模数据数组调用排序函数。以下是Apple关于使用json的博客:

这是一个方法,因为您的数据位于reviews数组中

    func sortByDate(){

    let formatter = DateFormatter()
    //define your date format
    formatter.dateFormat = "yyyy-MM-dd "
    formatter.timeZone = TimeZone(identifier: "UTC")

     reviews.sort{

        let date1  = formatter.date(from: $0.time)
        let date2 = formatter.date(from: $1.time)

        if date1 != nil && date2 != nil{
        return date1! > date2!
        }
        return false
      }

    }

只需转换为NSDate,然后使用SORTEDY您没有日期。时间值是一个格式为yyyy-MM-dd的字符串。只需像对任何字符串一样对该字符串进行排序。以yyyy MM dd形式表示日期的字符串可以作为普通字符串进行排序,排序后的值将按正确的顺序进行排序。您能告诉我如何调用吗?您的日期格式对于问题中的数据来说甚至都不正确。您的意思是,我想将字符串更改为nsdate,它不起作用,一旦看到我的代码如果你想按日期排序,你必须将字符串转换成日期对象。你不需要自己做,在sortByDate中,我们正在将字符串转换成日期。@jithendra Solanki,我想知道在代码中它在哪里可以调用sortByDate,你能给我完美的答案吗explanation@udaykumar我已经编辑了答案以符合您的要求。现在在将表视图重新加载为之前调用sortByDate