数组没有排序

时间:2015-08-31 04:34:31

标签: arrays swift sorting nsdate

我有foreach array。在structs我有两个struct个对象:NSDatetextLabel。我正在尝试从最新到最旧的日期/时间对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数据进行排序。为什么不发生这种情况?

1 个答案:

答案 0 :(得分:1)

按textLabel日期排序:

myItem.sort{$0.textLabel.compare($1.textLabel) == NSComparisonResult.OrderedAscending}

按detailTextLabel日期排序:

myItem.sort{$0.detailTextLabel.compare($1.detailTextLabel) == NSComparisonResult.OrderedAscending}

您应该为您的vars选择更好的名称。这是一个约会,而不是一个标签。