Swift Parse.com PFQuery按时间排序
在my parse.com的帖子中,它看起来像这样: 我的查询如下所示:Swift Parse.com PFQuery按时间排序,swift,parse-platform,Swift,Parse Platform,在my parse.com的帖子中,它看起来像这样: 我的查询如下所示: func QueryImagesFromParse(){ var query = PFQuery(className: "Posts") query.orderByDescending("createdAt") query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -&
func QueryImagesFromParse(){
var query = PFQuery(className: "Posts")
query.orderByDescending("createdAt")
query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in
if error == nil
{
if let newObjects = objects as? [PFObject] {
for oneobject in newObjects {
var text = oneobject["imageText"] as! String
var username = oneobject["username"] as! String
var time = oneobject.createdAt
var userImageFile = oneobject["imageFile"] as! PFFile
userImageFile.getDataInBackgroundWithBlock({ (imageData:NSData?, error:NSError?) -> Void in
if error == nil {
let newImage = UIImage(data: imageData!)
var OneBigObject = Details(username: username, text: text, CreatedAt: time!, image: newImage!)
self.arrayOfDetails.append(OneBigObject)
self.collectionView.reloadData()
}
})
}
}
}
}
}
NSDate扩展:
extension NSDate {
var timeAgo: String {
let minute = 60
let hour = 60 * minute
let day = 24 * hour
let secondsAgo = Int(NSDate().timeIntervalSinceDate(self))
if secondsAgo < 0 { return "later" }
if secondsAgo == 0 { return "now" }
if secondsAgo == 1 { return "1 second ago" }
if secondsAgo < minute { return "\(secondsAgo) seconds ago" }
if secondsAgo < (2 * minute) { return "1 minute ago" }
if secondsAgo < hour { return "\(secondsAgo/minute) minutes ago" }
if secondsAgo < 2 * hour { return "1 hour ago" }
if secondsAgo < day { return "\(secondsAgo / hour) hours ago" }
let formatter = NSDateFormatter()
formatter.dateFormat = "M/d/yy"
return formatter.stringFromDate(self)
}
}
我曾尝试使用query.orderByDescending对最新上传进行排序,但没有效果。。上传是随机的,而不是最新的。我做错了什么?我正在viewDidLoad中运行func QueryImagesFromParse。用于获取userImageFile然后追加OneBigObject的GetDataInBackgroundithBlock方法是异步的,因此不能保证数组的顺序正确 尝试删除该方法并改用此方法:
let imageData = userImageFile.getData()
我尝试在getDataInBackgroundithBlock方法之后添加它,这使它工作起来。但是我在运行时的输出中得到了很多错误消息:看这里:通常不推荐使用同步方法,因为它们会阻塞UI。我假设您正在下载要在UIImageView中显示的图像数据。在这种情况下,当您需要显示图像时,我将跳过此处获取图像数据,而是使用类似Swift或Objective-C的库进行异步图像加载。@Eri Sklii忘记在上面的注释中标记您。