我有foreach
array
。在structs
我有两个struct
个对象:NSDate
和textLabel
。我正在尝试从最新到最旧的日期/时间对detailTextlabel
进行排序。我希望textlabel
也可以根据detailTextLabel
进行排序。我想反过来做。这是我的代码:
textLabel
以下是发生的事情:
当我选择struct Item {
let textLabel : NSDate
let detailTextLabel : NSDate
}
var myItem = [Item]()
myItem.insert(Item(textLabel: myDateSecond, detailTextLabel: anotherDateSecond), atIndex: 0)
myItem.insert(Item(textLabel: myDateThird, detailTextLabel: anotherDateThird), atIndex: 0)
myItem.insert(Item(textLabel: myDateFirst, detailTextLabel: anotherDateFirst), atIndex: 0)
@IBAction func sortButtonsAction(sender: UIButton)
{
if sender == firstBtn {
myItem.sort({$0.textLabel.compare($1.detailTextLabel) == NSComparisonResult.OrderedAscending})
} else if sender == secondBtn {
myItem.sort({$0.detailTextLabel.compare($1.textLabel) == NSComparisonResult.OrderedAscending})
}
self.tableView.reloadData()
}
时,它会按照我期望的方式进行排序。但是当我按firstBtn
时,没有任何反应。
我想要发生什么
选择secondBtn
后,我希望secondBtn
根据array
数据进行排序。为什么不发生这种情况?
答案 0 :(得分:1)
按textLabel日期排序:
myItem.sort{$0.textLabel.compare($1.textLabel) == NSComparisonResult.OrderedAscending}
按detailTextLabel日期排序:
myItem.sort{$0.detailTextLabel.compare($1.detailTextLabel) == NSComparisonResult.OrderedAscending}
您应该为您的vars选择更好的名称。这是一个约会,而不是一个标签。