gpt4 book ai didi

ios - 如何按 NSDate 的顺序将对象插入数组?

转载 作者:行者123 更新时间:2023-11-29 02:20:13 25 4
gpt4 key购买 nike

我有一种方法可以加载用户个人资料库中使用的图像。使用数据库中的“updatedPhotoAt”列按降序加载图像。

“updatedPhotoAt”列的目的是允许用户设置默认图像。仅当用户滑动图像并点击“默认”按钮时,此列才会更新。 “updatedPhotoAt”列具有最新日期的图像是默认图像。

这是我的代码:

   func loadPhotoData() {
pageViews = []
pageImages = []
let query = PFQuery(className: "UserImages")
query.whereKey("user", equalTo: PFUser.currentUser())
query.addDescendingOrder("updatedPhotoAt")
query.findObjectsInBackgroundWithBlock { (objects: Array!, error: NSError!) -> Void in

if error != nil {
println("0 images found")
} else {
for object in objects as Array {
var imgDate = object["updatedPhotoAt"] as NSDate
println("1: \(imgDate)")

var imageFile = object["image"] as PFFile
var imgView = PFImageView()
imgView.file = imageFile
imgView.loadInBackground({ (image: UIImage!, error: NSError!) -> Void in
if error != nil {
//error alert
} else {
self.pageImages.append(image)
var imgDate = object["updatedPhotoAt"] as NSDate
println("2: \(imgDate)")

如您所见,当我查询数据库时,我使用“updatedPhotoAt”列确保结果按降序返回。在我的 block 中,我打印了此列的日期值,以便我可以查看是否一切正常。

最初它们是:

1: 2015-01-30 12:15:54 +0000

1: 2015-01-22 10:23:00 +0000

1: 2015-01-14 10:19:00 +0000

但是在 imgView block 中,它们丢失了它们的顺序:

2: 2015-01-22 10:23:00 +0000

2: 2015-01-14 10:19:00 +0000

2: 2015-01-30 12:15:54 +0000

这意味着我的默认图像只是偶然显示,图像总是以随机顺序显示在用户的照片库中(画廊是一个 ScrollView ,允许用户水平滚动浏览图像。默认图像应该总是在第一个列表)。

我发现问题是由 imgView block 引起的。有什么方法可以保持图像的顺序?

最佳答案

您不能指望您开始的 imgView.loadInBackground 异步进程都以与它们开始时相同的顺序完成。

做一些事情,比如用 NSNull 填充您需要在 pageImages 中使用的所有插槽,然后捕获您应该用 block 中的每个图像填充的索引并替换该索引处的项目,而不仅仅是附加。

此外,您可能应该限制同时开始的下载数量。尽量不要同时运行超过 4 个东西。

关于ios - 如何按 NSDate 的顺序将对象插入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com