我有一个基于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。
答案 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!)
}