Swift的“.sort”适用于模拟器,但不适用于iPhone

时间:2015-06-25 11:34:18

标签: ios swift cocoa-touch

我有一个奇怪的问题,我写的一些代码在iPhone模拟器上工作正常,但在手机本身无法正常工作。

基本上我正在对一组对象进行排序。排序将在NSString类型的成员上执行。

这是我的班级定义:

class Event: NSObject {

    var act: NSString!
    var start: NSDate!
    var end: NSDate!
}

这里是我用来包装Event对象集合的类的定义。

class Events: NSObject {
    var events = [Event]()

    func add(event: Event){
        events.append(event)
  }
}

我需要对数组进行排序,以便按行为的字母顺序排列。我是这样做的:

var result = allEvents.values.array as [Event]
sort(&result){$0.act < $1.act as String}

问题是:这在模拟器中运行良好,但在iPhone上运行时,结果数组按初始插入顺序排列。

我也尝试过:

result.sort({$0.act < $1.act as String})

但是我得到了相同的未分类结果。

关于我做错了什么的线索?

1 个答案:

答案 0 :(得分:0)

在事件中尝试此操作,并在要对数组进行排序时调用它 如果这不起作用而不是使用字符串!而不是NSString!

Swift 1.2

 func sortEvents()
{   events.sort(){
        return $0.act.localizedStandardCompare($1.act) == NSComparisonResult.OrderedAscending              }
}

Swift 2.0

 func sortEvents()
{   events.sortInPlace(){
          return $0.act.localizedStandardCompare($1.act) == NSComparisonResult.OrderedAscending              }
}