无法将“AnyObject”类型的返回表达式转换为返回类型“NSComparisonResult”

时间:2016-02-16 14:48:58

标签: swift sorting nsarray nsdate comparator

我有一个基于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
  }
}

但是当我尝试返回对象时,出现以下错误:

  

无法将“AnyObject”类型的返回表达式转换为返回类型   'NSComparisonResult'

我不明白什么是错的,为什么我不能只返回确定我的if语句的日期比较结果?

谢谢你的时间,Dan。

1 个答案:

答案 0 :(得分:3)

您的问题是,预计返回类型为NSComparasonResult,而您返回AnyObject。但是,您已在现有代码中获得NSComparasonResult。因此,只需用以下内容替换所有内容:

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