【问题标题】:How to store retrieved data to the another class in Parse如何将检索到的数据存储到 Parse 中的另一个类
【发布时间】:2015-10-16 07:41:14
【问题描述】:

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

 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..但我也想将所有 userIds 单独保存在“users”列中,就像它保存在_User 类的 objectId 列..

【问题讨论】:

  • 如果我理解正确,您将必须创建与拥有用户 ID 一样多的“Something”类对象,并且您将单独保存每个对象,这样您就可以填写“Something”类的表格”,或者您想要一个“Something”对象,其中包含一个包含用户 ID 的数组?
  • 我想将每个对象单独保存在“Something”类的“用户”列中。你谈论的第一个..

标签: ios swift parse-platform pfobject


【解决方案1】:

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

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)
        }
    })

在这种情况下,您创建了一些保存的对象,但您可能希望将“users”列重命名为“user”,因为每行只保存一个 objectId。

我已经有一段时间没有使用 parse 了,因此可能有一种方法可以优化您必须进行的 API 调用次数。

【讨论】:

  • 这个工作:D 但我现在还遇到一个问题,这个查询在我的 viewDidLoad 方法中,我希望它只在那里,现在每当我打开应用程序时,它都会保存再次使用相同的用户,所以我的问题是它不应该再次保存所有用户并添加不存在的用户.. :/
  • 您可以检索您的“某物”对象并检查已添加的 ID。或者您编写一个在服务器端处理该问题的云函数。还将您的 API 调用减少到 1。您可以使用要添加的 userId 数组调用此云函数,但我猜这是一个不同的问题。 :) 如果我的回答对您有帮助,能否请您将此标记为答案?
  • 无法检查:/我只想保存不存在的用户.. :(
  • 我被困在这里一周了 :-|
【解决方案2】:

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

我只想保存不存在的用户

嗯,有一些建议:

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

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

    user["saved"] = false

在创建新用户时,然后简单地做:

let search = PFQuery(className: "_User")

search.whereKey("saved", equalTo: false)

获取这些未保存的用户。

我强烈推荐第二个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 2019-01-04
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多