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

Posted

技术标签:

【中文标题】Swift - 根据数组值从 Parse 表中加载【英文标题】:Swift - load from Parse table based on array values 【发布时间】:2015-12-19 09:48:01 【问题描述】:

我的应用中有以下流程:

用户选择查看他的联系人列表 我从 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]

提前感谢您的帮助

【问题讨论】:

【参考方案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"]
                   
              
         
    

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

【讨论】:

以上是关于Swift - 根据数组值从 Parse 表中加载的主要内容,如果未能解决你的问题,请参考以下文章

根据字段的最小值从相关表中加入单个项目

如何在UITableView SWIFT中加载更多单元格

Swift 数组不返回所有值

在单个视图iOS中加载2个表视图[关闭]

无法在 AppDelegate 应用程序方法的数组中加载 HTTP POST 响应数据。如何解决这个问题?

Swift 2 - 无法在单独的 ViewController 中加载 UIWebView