如何将检索到的数据存储到Parse中的另一个类

时间:2015-07-25 20:22:10

标签: ios swift parse-platform pfobject

我有一个小问题。我正在使用Parse后端处理应用程序。所以我的问题是: 我已经在_User类中检索了所有用户的objectIds,如下所示:

 var userIds = [String]()

   var userQuery = PFUser.query()
      userQuery?.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in 

        if let users = objects {

            self.userIds.removeAll(keepCapacity: true)

        for object in users {

            if let user = object as? PFUser {

                if user.objectId != PFUser.currentUser()?.objectId {


                        self.userIds.append(user.objectId!)

                    }

                }

            }

        }

        println(userIds)
    })

现在我想将存储在数组“userIds”中的所有userIds保存到名为“Something”的类中的列中。所以代码就像:

 var something:PFObject = PFObject(className: "Something")
     something["users"] = // have problem here 

     something.saveInBackground()

如果我把userIds放在这里,它会给出一个错误..因为userIds是一个数组,但是列“users”是String ..但是我也希望将所有userId单独保存在“users”列中,就好像保存在_User类的objectId列..

2 个答案:

答案 0 :(得分:1)

我是新来的,我无法在你要求帮助的回复中发表评论。无论如何,你现在想要的只是保存新用户,正如你所说:

  

我只想保存不存在的用户

嗯,有一些建议:

  1. 您可以在应用中手动检索您的用户类并检查新用户,然后将新用户发送到您的班级。

  2. 您可以在User类中创建一个新列,例如"已保存"其中包含一个布尔值,表示您是否已将此用户保存到自定义类。还记得,总是这样做

    user["saved"] = false

  3. 创建新用户时,然后执行:

    let search = PFQuery(className: "_User")
    
    search.whereKey("saved", equalTo: false)
    

    获取这些未保存的用户。

    我强烈推荐第二种选择。

答案 1 :(得分:0)

好的,你描述的情况应该是这样的:

var userIds = [String]()

   var userQuery = PFUser.query()
    userQuery?.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

        if let users = objects as? [PFUser] {

            var somethingObjects = [PFObject]()

            self.userIds.removeAll(keepCapacity: true)

            for user in users {

                if user.objectId != PFUser.currentUser()?.objectId {

                    self.userIds.append(user.objectId!) // I don't know if this is necessary anymore for your usecase

                    var something:PFObject = PFObject(className: "Something")
                    something["users"] = user.objectId
                    somethingObjects.append(something)
                }

            }

            PFObject.saveAllInBackground(somethingObjects)
        }
    })

在这种情况下,您创建了一些保存的对象,但您可能希望重命名"用户"列到"用户",因为每行只保存一个objectId。

我暂时没有使用解析,因此可能有一种方法可以优化您必须进行的API调用次数。