无法将 'AnyObject' 类型的 return 表达式转换为 return 类型 'NSComparisonResult'

Cannot convert return expression of type 'AnyObject' to return type 'NSComparisonResult'

我有一个基于 Swift 的 iOS 应用程序。我正在尝试使用 Swift 排序方法之一按 "createdAt" NSDate 属性.

对我的对象数组进行排序

我的数组有一堆 PFObject - 这些对象具有不同的属性,包括一个名为 "createdAt".

NSDate 属性

我只想对数组进行排序,以便将最旧的对象发送到数组的底部。

这是我的代码:

let sortedArray = (self.statusData.copy() as! NSArray).sortedArrayUsingComparator { (obj1, obj2) -> NSComparisonResult in

  if (((obj1 as! PFObject).createdAt?.compare((obj2 as! PFObject).createdAt!)) == NSComparisonResult.OrderedDescending) {
      return obj2
  }

  else {
      return obj1
  }
}

然而,当我尝试 return 对象时,出现以下错误:

Cannot convert return expression of type 'AnyObject' to return type 'NSComparisonResult'

我不明白怎么了,为什么我不能只 return 确定我的 if 语句的日期比较结果?

谢谢你的时间,丹。

您的问题是它期待 return 类型的 NSComparasonResult 而您 return 正在 AnyObject。但是,您已经在现有代码中获得了 NSComparasonResult。因此,只需将所有内容替换为:

let sortedArray = (self.statusData.copy() as! NSArray).sortedArrayUsingComparator { (obj1, obj2) -> NSComparisonResult in
    return (obj1 as! PFObject).createdAt?.compare((obj2 as! PFObject).createdAt!)
}