Arrays 数组排序错误:“二进制运算符“

Arrays 数组排序错误:“二进制运算符“,arrays,swift,sorting,timestamp,Arrays,Swift,Sorting,Timestamp,这是按tableView时间戳中的每个单元格对数组进行排序的代码 self.ProjectsArray.sorted(by: { (project, project2) -> Bool in return project.timestamp?.intValue < project2.timestamp?.intValue }) 是否有更好的方法对数组进行排序?我做错了什么?编辑-根据您的评论,您希望就地排序,因此我正在更新以就地排序 时间戳变量是

这是按tableView时间戳中的每个单元格对数组进行排序的代码

self.ProjectsArray.sorted(by: { (project, project2) -> Bool in       
   return project.timestamp?.intValue < project2.timestamp?.intValue     
   })
是否有更好的方法对数组进行排序?我做错了什么?

编辑-根据您的评论,您希望就地排序,因此我正在更新以就地排序

时间戳变量是可选的,因此您可能会将nil与nil或nil与Int进行比较。您可以安全地展开这些变量,并在其中一个变量为nil时提供排序顺序,也可以使用nil合并运算符将nil值视为某些默认Int,如0。这两个选项如下所示:

可选展开:

self.ProjectsArray.sort(by: { (project, project2) -> Bool in
    if let timestamp1 = project.timestamp, let timestamp2 = project2.timestamp {
       return timestamp1.intValue < timestamp2.intValue
    } else {
        //At least one of your timestamps is nil.  You have to decide how to sort here.
        return true
    }    
})
零合并运算符:

self.ProjectsArray.sort(by: { (project, project2) -> Bool in  
    //Treat nil values as 0s and sort accordingly     
    return (project.timestamp?.intValue ?? 0) < (project2.timestamp?.intValue ?? 0)     
})

问题是,您正在尝试比较选项。当其中一个变量为nil时,您需要定义如何比较变量。您返回的两个代码部分都会留下一条警告:“sortedby:”的调用结果未使用@ScreerPeakeys,因为您只是对数组进行排序,而不做任何处理。如果您试图就地排序,则应将sortedby更改为sortby,这将对原始数组进行排序。否则,sortedby将返回原始数组的一个新的排序版本。老实说,我对您的代码@Screerspeak相当困惑,我应该如何在这段代码之后继续对数组进行排序?将sortedby更改为SortBy更新示例以提供此更改。我只是想指出,使用sorted函数和sort函数是有区别的。