我正在使用 swift 和 Parse 开发一个应用程序。由于某些原因,我在 _User 类中实现了一个名为“modified”的 Bool。几个月来我一直在研究 swift 和 Parse,但这没有意义。
当我尝试检索“修改后的”Bool 的值时,即使它在 Parse 服务器上设置为“true”,我仍然得到“false”值。这是代码:
var modified: Bool = PFUser.currentUser().objectForKey("modified") as! Bool
println("User Modified Bool is set to: \(modified)")
我也试过
self.modified = PFUser.currentUser().valueForKey("modified") as! Bool
println("User Modified Bool is set to: \(modified)")
和
self.modified = PFUser.currentUser()["modified"] as! Bool
println("User Modified Bool is set to: \(modified)")
我是否必须进行特定查询或是否有直接访问此值的方法?
编辑
我已经实现了一个特定的查询。尽管如此,仍然得到一个“假”值
var queryMainUser: PFQuery = PFUser.query()
queryMainUser.whereKey("username", equalTo: PFUser.currentUser().username)
queryMainUser.findObjectsInBackgroundWithBlock { (mainUsersObjects, mainUsersError) -> Void in
if (mainUsersError == nil) {
var theRef = mainUsersObjects[0] as! PFObject
self.modified = theRef["modified"] as! Bool
println("Any improvement? \(self.modified)")
}
}
编辑2
按照@danh 的建议,我尝试通过实现以下代码来更新设备上的 currentuser 实例:
var currentUser = PFUser.currentUser()
currentUser.fetchInBackgroundWithBlock { (object, error) -> Void in
println("Refreshed")
currentUser.fetchIfNeededInBackgroundWithBlock { (result, error) -> Void in
self.modified = currentUser.objectForKey("modified") as! Bool
var idOfUser: String = currentUser.objectId
println("User \(idOfUser) UPDATED")
println(self.modified)
if self.modified == true {
self.deleteData()
self.fetchAllObjects()
}
}
}
当运行控制台时给我这个:
Refreshed
User xTbBw6cNzK UPDATED
false
这是我刚刚截取的服务器端截图:
谢谢大家的关注
最佳答案
我不确定您使用的是哪个版本的 swift。但是,如果您使用的是 Swift 2.0 和 Xcode 7,这应该可以胜任。
这行不通:
let modifiedStatus = PFUser.currentUser()?["modified"] // return value will be nil
这肯定有效:
let modifiedStatus = PFUser.currentUser()?.objectForKey("modified")
print(modifiedStatus) // true as per your table
我知道这听起来可能很奇怪,但有些人在数小时后才意识到我犯了愚蠢的错误。因此,最好先退出当前任务,然后在几个小时后重新检查。因此,请务必交叉检查以下内容:
- parse主用户类中“修改”的key
- 您可以检索其他键值(只是为了查看除了您当前检索的键 bool 值之外是否没有其他错误(
虽然我使用的是 Swift 2.0,但可以肯定的是,从 Swift 1.2 迁移到 Swift 2.0 时,此特定代码没有重大变化。
看看,如果还是不行,我们可以就您的设置进行更多讨论。
关于ios - 快速解析: can not retrieve the value of a bool in _User class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811158/