我想根据日期对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
...但我完全不知道如何正确使用它......
答案 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)
}
如果你想使用排序描述符,最好对你的可变数组进行排序,而不是创建一个新的,不可变的数组,就像上面@ 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])
希望它可以帮助您获得理想的结果