Swift - 根据数组值从Parse表加载

时间:2015-12-19 09:48:02

标签: ios swift parse-platform

我的应用程序中有以下流程:

  • 用户选择查看其联系人列表
  • 我从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的值是:

  

[“username1”,“username2”,“username3”]

我不知道第三部分是如何通过一个请求获得一个主要对象(以避免对上面数组中的每个用户名的单个请求)。我想要的可能就是这样:

  

User1 - > [姓名:XXXXX,年龄:20,电话号码:019282992]用户2 - > [名称:   YYYY,年龄:22,编号:045527229]

感谢您的提前帮助

2 个答案:

答案 0 :(得分:0)

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

解决方案是使用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)
            }

        }
    }

以上代码有效且很乐意回答与之相关的任何问题。

答案 1 :(得分:0)

您也可以尝试这个(与之前的答案略有相似)

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"]
                   }
              }
         }
    }
}

如果有效,请告诉我。您可能需要为选项添加一些问题/感叹号。希望这可以帮助。