首页 > 解决方案 > Parse Server Swift Logic 用于抓取数组中包含的所有项目

问题描述

我正在使用带有 Swift 的解析服务器。我正在尝试获取关键“用户名”包含在commentUserArray 中的所有匹配项。注释 userArray 显示 3 个名称 ["username","username", "username2"]。

该查询仅获取两个值而不是三个值,因为它仅查找这两个用户名“username”和“username1”。但是,我需要所有 3 个实例。请帮忙。

   var commentImgUrlArray: [NSString] = []

   func getPics(_ completionHandler: @escaping () -> Void) {
    let query = PFQuery(className: "_User")
    query.whereKey("username", containedIn: commentUserArray)
    query.findObjectsInBackground(block: { (objects: [PFObject]?, error: Error?) in
    if let objects = objects {
        for object in objects {
                if error == nil {
                    let imageFile = object["profilePic"] as? PFFileObject
                    let imageFileString = imageFile?.url as! String
                    if let url = URL(string: imageFileString) {
                        let data = try? Data(contentsOf: url)
                        if let imageData = data {
                            self.commentImgUrlArray.append(imageFileString as NSString)
                            print(self.commentImgUrlArray)
                        }
                    }
                    }
                }
                completionHandler()
            }
    })
}

标签: swiftxcodeamazon-web-servicesparse-platform

解决方案


因此,经过反复试验,我遇到了解决方案。

  1. 删除原始 query.contained in,因为它会覆盖公式的其余部分。

  2. 理想情况下,我想运行一个查询。在commentuserarray 中没有多少。因此,for in 循环应该放在 query.find 中 -->

  3. 需要为该特定用户抓取对象。因此,设 pfuser = object["username"] as String

  4. 反转数组以获得正确的顺序 -

     func getPics(_ completionHandler: @escaping () -> Void) {
     let query = PFQuery(className: "_User")
     query.findObjectsInBackground(block: { (objects: [PFObject]?, error: 
     Error?) in
     if let objects = objects {
         for object in objects {
                 if error == nil {
                     for user in self.commentUserArray {
                     let pfuser = object["username"] as! String
                     if pfuser == user {
                     let imageFile = object["profilePic"] as? PFFileObject
                     let imageFileString = imageFile?.url as! String
                     if let url = URL(string: imageFileString) {
                         let data = try? Data(contentsOf: url)
                         if let imageData = data {
                             self.commentImgUrlArray.append(imageFileString as 
                           NSString)
                             print(self.commentImgUrlArray)
                         }
                                 }
                             }
                         }
                     }
                 }
                 self.commentImgUrlArray.reverse()
                 completionHandler()
             }
     })
    

    }


推荐阅读