【发布时间】:2015-11-11 03:47:37
【问题描述】:
我想知道如何存储整个自定义列(来自自定义类的用户 Pointer<_User> 列)并将它们全部放入数组变量中,以便我可以查看用户是否存在于该类中.这就是我所拥有的:
旧代码
var objectUserIdArray = [String]()
let objectUserIdQuery : PFQuery = PFQuery(className: "Scores")
objectUserIdQuery.findObjectsInBackgroundWithBlock {
(objects : [PFObject]? , error : NSError?) -> Void in
var objectID = objects! as [PFObject]
for i in 0..<objectID.count {
objectUserIdArray.append(objectID[i].objectId!)
}
for _ in objectID {
print(objectUserIdArray)
}
新代码
func saveScoresOnParse() {
objectUserIdQuery.whereKey("User", equalTo: PFObject(withoutDataWithClassName: "_User", objectId: userID))
objectUserIdQuery.findObjectsInBackgroundWithBlock {
(objects : [PFObject]? , error : NSError?) -> Void in
if error == nil {
//var objectID = objects! as [PFObject]
/*for i in 0..<objectID.count {
self.objectUserIdArray.append( objectID[i].objectId! )
}*/
for _ in objects! {
print(objects)
}
// The score key has been incremented
for (var i = 0 ; i < self.objectUserIdArray.count ; i++) {
if self.userID != objects![i] {
print("New Scores")
print("R: \(self.rightAnswers)")
print("W: \(self.wrongAnswers)")
print("S: \(self.skippedQuestions)")
self.scores["User"] = PFUser.currentUser()
self.scores["Right"] = self.rightAnswers
self.scores["Wrong"] = self.wrongAnswers
self.scores["Skipped"] = self.skippedQuestions
self.scores.saveInBackground()
} else if self.userID == objects![i] {
print("Updated Scores")
self.scores.incrementKey("Right", byAmount: 1)
self.scores.incrementKey("Wrong", byAmount: 1)
self.scores.incrementKey("Skipped", byAmount: 1)
print("R: \(self.rightAnswers)")
print("W: \(self.wrongAnswers)")
print("S: \(self.skippedQuestions)")
self.scores.saveInBackgroundWithBlock {
(success: Bool, error: NSError?) -> Void in
if (success) {
// The score key has been incremented
} else {
// There was a problem, check error.description
}
}
} else {
print("Error")
}
}
} else {
print(error)
}
}
但它只存储objectId 列而不是Pointer<_User> 列。我知道这一点,因为当我打印里面的东西时,它会打印出 objectIds。
这就是发生的事情,而不是仅仅更新当前用户的分数,它只是产生新的分数。我希望 if 语句检查用户是否已经存在于该列中,如果它确实更新了分数,如果没有,则创建新的。 (新代码的if语句不起作用,我必须把它拿出来保存......)
【问题讨论】:
-
您要存储什么? PFObject?
-
我想存储指向用户的整个 objectID。不是在新的自定义类中创建的。就像我想将值存储在第二列或第三列或第四列中。不是整行的 objectID @Paulw11
-
因此,您只需访问包含用户对象的列。类似
objectID[i]["user"].objectId -
是的。但是我尝试了这种方法,它给了我一个错误@Paulw11
-
提供您尝试过的代码和错误信息。您将需要解开可选的并且可能还向下转换。
标签: ios swift parse-platform