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

时间:2015-05-18 10:51:02

标签: ios swift sorting

我想根据日期对UICollectionview数据进行排序...即。我希望我的UICollectionview单元格位置像First Come Last Serve ....意味着最旧的日期是最后一个,最新的日期是第一个......

{   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";
}

以上回复我试图用" news_date"那是时间戳。 我正在尝试使用sortedArrayUsingDescriptors ...但我完全不知道如何正确使用它......

3 个答案:

答案 0 :(得分:0)

如果要对词典进行排序:(但是,我强烈建议不要使用它。在使用它们之前将数据转换为适当的对象。

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];
}];

答案 1 :(得分:0)

我更习惯使用基于闭包的排序。你可以使用这样的代码:

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

对可变数组进行排序。

该代码根据您当前的日期字符串进行排序。这应该基于日期字符串的形成方式。你最好将日期值保存为NSDates。

编辑:

该代码不适用于NSMutableArrays。

如果要对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)
}

编辑#2:

如果你想使用排序描述符,最好对你的可变数组进行排序,而不是创建一个新的,不可变的数组,就像上面@ TejvanshSinghChhabra的答案中的代码一样。该代码看起来像这样:

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

答案 2 :(得分:0)

您可以尝试使用排序描述符对数组进行排序。

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

希望它可以帮助您获得理想的结果