简体   繁体   English

如何根据日期对响应数据进行排序

[英]How to sort response data according to date

I want to sort my UICollectionview data according to date...ie i want my UICollectionview cells position like First Come Last Serve....means the oldest date is at the last and the newest at the first... 我想根据日期对我的UICollectionview数据进行排序...即我希望我的UICollectionview单元格位置像“先到最后服务”。...意味着最早的日期在最后,最新的在第一次...

{   data = (
                {
                   "news_date" = "2015-05-18 03:29:00";
                   "newslist_ID" = 1;
                   "title" = "title1";
                }, {
                   "news_date" = "2015-05-18 03:30:00";
                   "news_ID" = 2;
                   "title = "title2";
                }
            );
    "status" = "SUCCESS";
}

Above response i am trying to sort with "news_date" that is timestamp . 在响应上方,我正在尝试使用timestamp的“ news_date”进行排序。 I am trying to use sortedArrayUsingDescriptors ...but i have absolutely no idea how to use it properly.... 我正在尝试使用sortedArrayUsingDescriptors ...但是我绝对不知道如何正确使用它。

If you are sorting dictionaries: ( However, I strongly advise against it. Transform your data to proper objects before working with them. ) 如果您要对字典进行排序:( 但是,我强烈建议不要这样做。在将数据转换为适当的对象之前,请先对其进行处理。

NSArray* data = // array of dictionaries
NSArray* sortedData = [data sortedArrayUsingComparator:^NSComparisonResult(NSDictionary* obj1, NSDictionary* obj2) {
    NSDate* date1 = [obj1 objectForKey:@"news_date"]; // Date of obj1
    NSDate* date2 = [obj2 objectForKey:@"news_date"]; // Date of obj2

    return [date1 compare:date2];
}];

I'm more comfortable using closure-based sorting. 我更喜欢使用基于闭包的排序。 You could use code like this: 您可以使用如下代码:

array.sort
{
  $0["news_date" < $1["news_date"]
}

to sort a mutable array in place. 对可变数组进行排序。

That code is sorting based on your current date strings. 该代码是根据您当前的日期字符串排序的。 That should work based on the way your date strings are formed. 这应该根据您的日期字符串的形成方式而起作用。 You'd really be better off saving your date values as NSDates though. 不过,最好将日期值保存为NSDates。

EDIT: 编辑:

That code won't work for NSMutableArrays. 该代码不适用于NSMutableArrays。

If you're sorting NSMutableArrays the syntax would look like this: 如果要对NSMutableArrays进行排序,则语法应如下所示:

var objCArray = [["key":"kumquat"],
  ["key": "orange"],
  ["key": "grape"],
  ["key": "apple"],
  ["key": "pear"],
  ["key": "mango"]] as NSMutableArray


objCArray.sortUsingComparator
  {
    (obj1, obj2) -> NSComparisonResult in
    let key1 = obj1["key"] as! String
    let key2 = obj2["key"] as! String
    return key1.compare(key2)
}

EDIT #2: 编辑#2:

If you want to use sort descriptors, it would be better to sort your mutable array in place, rather than creating a new, immutable array like the code in @TejvanshSinghChhabra's answer, above. 如果要使用排序描述符,最好对可变数组进行排序,而不是像上面@TejvanshSinghChhabra的答案中的代码那样创建新的不可变数组。 That code would look something like this: 该代码看起来像这样:

var descriptor: NSSortDescriptor = NSSortDescriptor(
  key: "news_date", 
ascending: true) // or false, whichever suits you.
arrayNewslist.sortUsingDescriptors([descriptor]) //Sorts NSMutableArray in place 

You can try sorting the array using Sort Descriptor. 您可以尝试使用“排序描述符”对数组进行排序。

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "news_date", ascending: true) // or false, whichever suits you.
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor]) 

Hope it helps you to get desired result 希望它能帮助您获得理想的结果

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM