我对WordPress网站上作为对象存储在iOS应用程序中的文章的一组评论。评论对象的一些关键属性是:
public let id: Int //Unique identifier of comment
public let parentID: Int //ID of the comment this comment is replying to. If it is a top level comment the value is 0.
public let dateCreated: Date //The date the comment was created
我希望以UITableView
的形式显示这些评论,就像在WordPress网站(和大多数其他网站)上一样,这些评论按日期排序,但子评论也显示在其父母的下方,如果对一个评论有多个答复,则按日期排序。呈现评论的最简单方法似乎是在单个评论UITableView
的每个评论中包含一行,其中子评论将缩进以表明它们正在回复其他评论(同样,与WordPress和大多数其他设计相同)网站)
我正在努力寻找一些明智的代码来以这种方式对注释进行排序。我已经能够通过先按parentID进行排序,然后再按日期进行多级排序,但这不能提供正确的结果(对回复的评论显示在列表的底部,而不是在其父母的评论之后):
var sortedComments = comments.sorted { //comments is the array of comment-objects
if $0.parentID != $1.parentID {
return $0.parentID < $1.parentID
} else {
return $0.dateCreated < $1.dateCreated
}
}
我猜想其背后的算法可以与编程语言无关地重用,因此,如果有人具有不受编程语言欢迎的算法(但是,如果有人具有特定的Swift-answer,我不在乎!)< / p>