我有一个小问题。我正在使用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列..
答案 0 :(得分:1)
我是新来的,我无法在你要求帮助的回复中发表评论。无论如何,你现在想要的只是保存新用户,正如你所说:
我只想保存不存在的用户
嗯,有一些建议:
您可以在应用中手动检索您的用户类并检查新用户,然后将新用户发送到您的班级。
您可以在User类中创建一个新列,例如"已保存"其中包含一个布尔值,表示您是否已将此用户保存到自定义类。还记得,总是这样做
user["saved"] = false
创建新用户时,然后执行:
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调用次数。