我有一些用户评论存储在数据库(parse-server)中,我想在viewController viewDidLoad()
上显示。我可以轻松地拉出评论对象,如下所示:
super.viewDidLoad()
func query(){
let commentsQuery = PFQuery(className: "Comments")
commentsQuery.whereKey("objectId", equalTo: detailDisclosureKey)
commentsQuery.findObjectsInBackground { (objectss, error) in
if let objects = objectss{
if objects.count == 1{
for object in objects{
self.unOrderedComments.append(object)
}
}
}
}
}
此查询转储unOrederedComments
数组中的所有注释。每个注释都会添加到数据库中,并自动添加createdAt
属性,该属性与其创建的确切时间相关。此属性是一个字符串,其中包含(作为示例)形式:" 2017-08-13T19:31:47.776Z" (最后的Z是在每个字符串的末尾...不完全确定为什么它在那里,但它的常数)。现在,每个新注释都被添加到数据库的顶部,因此任何查询结果应该无论如何都是有序的。但是,如果有必要,我想通过重新排序来确保确定。我的一般思维过程是使用.sorted
,但我无法弄清楚如何将此应用于我的情况
func orderComments(unOrderComments: [PFObject]) -> [PFObject]{
let orderedEventComments = unOrderedEventComments.sorted(by: { (<#PFObject#>, <#PFObject#>) -> Bool in
//code
})
}
这是通用设置,但我不能,尽管在网上查找了几个例子,想出要放在&lt;#PFObject#&gt;&#39;和//code
中的内容。我想根据&#34; createdAt&#34;来订购它们。属性,但这不是通过点表示法实现的,而是需要PFObject [&#34; createdAt&#34;]并使用此表示法会导致错误。虽然我可能需要设置一个自定义谓词但我不知道如何做到这一点,我觉得如此。
答案 0 :(得分:2)
我遇到了同样的情况,我做的是先用我下载的数据创建一个结构数组,然后将字符串createdAt
转换为Date,然后使用此函数:
dataArrayOrdered = unOrderedArray.sorted(by: { $0.date.compare($1.date) == .orderedAscending})
(。date是我的strcuts数组中存储的日期)
尝试此代码,请注意我假设您在Parse数据库中有一个名为[“Comments”]的变量名称,因此必要时替换。此外,我意识到createdAt
它是日期格式,所以没有必要将它从字符串更改为日期,如果它对你的工作原理相同,如果它没有引用它:{{3} }。
struct Comment {
var date = Date()
var comment = String()
}
var unOrderedComments: [Comment] = []
var orderedComments = [Comment]()
override func viewDidLoad() {
super.viewDidLoad()
query()
}
func query(){
let commentsQuery = PFQuery(className: "Comments")
commentsQuery.findObjectsInBackground { (objectss, error) in
if let objects = objectss{
if objects.count >= 1{
for object in objects{
let newElement = Comment(date: object.createdAt!, comment: object["Comments"] as! String)
self.unOrderedComments.append(newElement)
print(self.unOrderedComments)
}
}
self.orderedComments = self.unOrderedComments.sorted(by: { $0.date.compare($1.date) == .orderedAscending})
print(self.orderedComments)
}
}
}