ios - 快速解析: can not retrieve the value of a bool in _User class

标签 ios iphone swift parse-platform

我正在使用 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

这是我刚刚截取的服务器端截图: can't get bool from Parse

谢谢大家的关注

最佳答案

我不确定您使用的是哪个版本的 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/

相关文章:

iphone - MPMusicPlayerController 在后台暂停并在应用程序进入前台时恢复

iphone - 找不到尺寸正确的图标 120 x 120 的图像

android - 从桌面以移动方式查看网站

iOS Swift 如何使用 <script> 标签解析 HTML 文件并获取其中的值

ios - Swift 从数据(字节数组)创建 URL 对象而不写入磁盘

ios - NSUserDefaults - 如何读取保存的数组

ios - 如何在 Swift 上单击按钮时打开 pdf 链接?

ios - firebase 数据库结构的好方法,以便按日期排序?

iphone - double 中的 objective-c stringvalue

ios - SCNNode Z轴旋转轴保持不变,而X轴和Y轴在节点旋转时发生变化