PFQuery使用for In循环将数据添加到表单元格中

问题描述 投票:0回答:1

我有两个版本的代码。版本1是我打算使用的代码。我正在尝试在好友数组中查找当前用户的好友。对于每个朋友,我想将某些项目附加到每个数组以显示在表格视图单元格中。第1版在i朋友数组中包含一个for循环,其中包含:[“ magellan”]。当我使用PFQuery查找数据时,它不执行查询。但是,版本2不在for in循环中运行,也不使用friend。它使用实际的字符串“ magellan”代替,并且工作正常。我怎么了谢谢

Version 1: 
override func viewdidload() {
for i in 0..<friendsArray.count {
    friend = friendsArray[i]
    print(friend)
    let query2 = PFQuery(className: "CheckPost")
               query2.whereKey("Username", equalTo: friend)
               query2.findObjectsInBackground  (block: { (objects:[PFObject]?, error: Error?) in
                   if let objects = objects {
                       for object in objects {
                           self.checkArray.append(object["Checks"] as! String)
                           self.checkArrayobjectId.append(object.objectId!);
                           self.checkTimeArray.append(object["UserTime"] as! String)
                           //append userimage
                           self.checkPicArray.append(UIImage(named: "randomguy")!)
                           print("successfully checked for friends checks")

                       }
                   } else if error != nil {
                       print(error)
                   }
               })
    }
Version 2: 
override func viewdidload()
for i in 0..<friendsArray.count {
    friend = friendsArray[i]
    print(friend)

    }
 let query2 = PFQuery(className: "CheckPost")
               query2.whereKey("Username", equalTo: "magellan")
               query2.findObjectsInBackground  (block: { (objects:[PFObject]?, error: Error?) in
                   if let objects = objects {
                       for object in objects {
                           self.checkArray.append(object["Checks"] as! String)
                           self.checkArrayobjectId.append(object.objectId!);
                           self.checkTimeArray.append(object["UserTime"] as! String)
                           //append userimage
                           self.checkPicArray.append(UIImage(named: "randomguy")!)
                           print("successfully checked for friends checks")

                       }
                   } else if error != nil {
                       print(error)
                   }
               })
         }
swift uitableview parse-platform for-in-loop
1个回答
0
投票

似乎您误解了findObjectInBackground函数的异步行为。此函数是异步的,仅在循环结束后才调用回调。但是,您的代码应与find一起使用。像这样的东西:

for i in 0..<friendsArray.count {
    friend = friendsArray[i]
    print(friend)
    let query2 = PFQuery(className: "CheckPost")
    query2.whereKey("Username", equalTo: friend)
    let objects = query2.find()
    if objects {
        for object in objects {
            self.checkArray.append(object["Checks"] as! String)
            self.checkArrayobjectId.append(object.objectId!);
            self.checkTimeArray.append(object["UserTime"] as! String)
            //append userimage
            self.checkPicArray.append(UIImage(named: "randomguy")!)
            print("successfully checked for friends checks")
         }
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.