【问题标题】:for in loop only saving the last element in Parse. SWIFTfor in 循环只保存 Parse 中的最后一个元素。迅速
【发布时间】:2015-04-16 18:15:43
【问题描述】:

我正在对一个 PFUser 数组执行 for in 循环,然后在该 for in 循环中,我希望能够为每个已循环通过的用户设置关键字段。由于某种原因,它只保存了 for in 循环的最后一个元素。有人可以解释我做错了什么吗?代码:

var user2ObjId = ["N7xqk8oFJx", "Q5lPX2DUmP", "mfkO8iypTB"]

let userQuery = PFUser.query()
        userQuery.whereKey("objectId", containedIn: user2ObjId)
        let foundUsers = userQuery.findObjects()
        if foundUsers.count > 0 {
            let addRoomObject = PFObject(className: "Room")
            for user in foundUsers {

                addRoomObject["user1"] = PFUser.currentUser()
                addRoomObject["user2"] = user

                addRoomObject.addObject(2, forKey: "questionNumbers")
                addRoomObject["matchCount"] = 1

            }
            addRoomObject.saveInBackgroundWithBlock({ (success: Bool, error: NSError!) -> Void in
                if success == true {
                   // println("Added new users to room")
                }
            })
        }

user2ObjId 数组中唯一保存的是mfkO8iypTB。这是为什么呢?

【问题讨论】:

    标签: arrays swift for-loop parse-platform


    【解决方案1】:

    如果您查看 for-in 循环,您将属性设置到同一个实例中,但您在退出循环时会保存,这发生在处理 foundUsers 中的最后一个元素时 - 这解释了原因仅保存最后一个对象。

    您可以使用saveAllInBackground

    var array = [PFObject]()
    for user in foundUsers {
      let addRoomObject = PFObject(className: "Room")
    
      addRoomObject["user1"] = PFUser.currentUser()
      addRoomObject["user2"] = user
    
      addRoomObject.addObject(2, forKey: "questionNumbers")
      addRoomObject["matchCount"] = 1
    
      array.append(addRoomObject)     
    }
    
    PFObject.saveAllInBackground(array, block({ (success: Bool, error: NSError!) -> Void in
       if success == true {
           // println("Added new users to room")
       }
    })
    

    【讨论】:

    • 不行,我也试过这个,结果还是一样。它只保存最后一个元素。
    • @HenryBrown:好的,请参阅更新的答案 - 如果我犯了任何错误,我提前道歉,我已经在普通的文本编辑器中编写了代码,所以很可能我写错了: )
    • 很好的答案,它应该工作,但它没有?我打印了您刚刚设置的array 数组变量,它在数组中显示了同一个用户三次,而不是应该显示三个不同的用户??
    • 出于某种原因,它添加了三次相同的用户,而不是迭代并单独添加每个用户?我不知道你为什么
    • 这很奇怪 - 你能检查一下 foundUsers 是否真的包含 3 个不同的用户吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多