【问题标题】:Swift - load from Parse table based on array valuesSwift - 根据数组值从 Parse 表中加载
【发布时间】:2026-01-05 15:20:02
【问题描述】:

我的应用中有以下流程:

  • 用户选择查看他的联系人列表
  • 我从 FriendsConnection 表中加载与当前登录的用户(基本上是当前用户的朋友)匹配的朋友(用户名)数组。存储在数组中
  • 对 Parse 中的 Users 类进行另一个数据库查询,以获取与本地存储的数组中的每个用户名相关的信息。将其存储在本地
    • 使用联系人列表填充表格视图,单击后显示详细信息。

对于上面的第 2 步,我有:

var friendsUsernamesListArray: [String] = []
func loadFriendsUsernames()
    {
        let query = PFQuery(className:"FriendsConnections")

        query.whereKey("appUsername", equalTo:PFUser.currentUser()!["appUsername"])
        query.findObjectsInBackgroundWithBlock {
            (objects: [PFObject]?, error: NSError?) -> Void in

            if error == nil{
                //print("Successful")
                //print(objects)

                self.friendsUsernamesListArray = objects![0]["friendsList"] as! NSArray as! [String]


            }else{
                print("Failure")
            }

        }
    }

现在 friendsUsernamesListArray 的值是:

[“用户名 1”、“用户名 2”、“用户名 3”]

我不确定如何执行第三部分以通过一个请求返回一个主要对象(以避免对上面数组中的每个用户名的单个请求)。我想要的可能是得到这样的东西:

User1 -> [姓名:XXXXX,年龄:20,号码:019282992] User2 -> [姓名: YYYY,年龄:22,号码:045527229]

提前感谢您的帮助

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    找到答案并分享给未来类似问题的参考:

    解决方案是使用 Parse PFQuery 提供的 containsIn 关键字。

    func loadFriendsInfo()
        {
            let query : PFQuery = PFUser.query()!
    
            query.whereKey("appUsername", containedIn: self.friendsUsernamesListArray)
            query.findObjectsInBackgroundWithBlock {
                (objects: [PFObject]?, error: NSError?) -> Void in
    
                if error == nil{
                    print(objects)
                }else{
                    print("Getting Usernames Info Failure")
                    print(error)
                }
    
            }
        }
    

    上面的代码可以正常工作,很乐意回答与它相关的任何问题。

    【讨论】:

      【解决方案2】:

      你也可以试试这个(和之前的回答有点相似)

      let query = PFQuery(className: "Users")
       query.findObjectsInBackgroundWithBlock{(objects, error) -> Void in 
          if objects.count > 0 {
              for object in objects {
                  for friend in self.friendsUsernamesListArray {
                         if object["username"] == friend {
                              //get objects info and add it to other things. E. g. object["email"]
                         }
                    }
               }
          }
      }
      

      让我知道这是否有效。您可能需要为选项添加一些问号/感叹号。希望这可以帮助。

      【讨论】: