不会在swift中更新Parse数据中的UILabel

时间:2015-03-05 10:39:16

标签: ios swift parse-platform uilabel

我正在尝试将我的UILabel更新为Parse数据库中的String。 我的问题是标签在我第一次登录时不会更新我的firstnameLabel。但它会更新,当我登录(没有任何反应)时,按下Xcode中的停止按钮,然后再次启动它(仍然登录)然后更新标签。 我怎么能更快地做到这一点??

这是我的代码:

var currentUser = PFUser.currentUser()
if currentUser != nil {


    var query = PFQuery(className:"_User")
    query.getObjectInBackgroundWithId(currentUser.objectId) {
        (bruger: PFObject!, error: NSError!) -> Void in
        if error == nil && bruger != nil {
            var firstName: String = bruger["firstname"] as String
            self.usernameLabel.text = firstName
        } else {
            println("Error")
        }
    }


} else {
    self.performSegueWithIdentifier("goto_login", sender: self)
}

希望你能帮助我!

3 个答案:

答案 0 :(得分:0)

不是试图通过id再次加载用户对象,而是尝试仅进行提取。

[currentUser fetchIfNeededInBackgroundWithBlock: ... ];

通过尝试加载对象,您可能会获得缓存版本。

答案 1 :(得分:0)

我在某个地方读到了它可能是因为the can被置于ViewDidLoad中。我试图把它放在那之外它起作用了!

答案 2 :(得分:0)

听起来你把它放在ViewDidLoad方法中。您应该将其放在ViewWillAppear方法中。这是一个例子。

1)ViewDidLoad - 每当我将控件添加到应该与视图一起出现的视图时,我就把它放在ViewDidLoad方法中。基本上,只要将视图加载到内存中,就会调用此方法。例如,如果我的视图是带有3个标签的表单,我会在这里添加标签;没有这些形式,视图永远不会存在。

2)ViewWillAppear:我通常只使用ViewWillAppear来更新表单上的数据。因此,对于上面的示例,我将使用它来实际将数据从我的域加载到表单中。创建UIViews是相当昂贵的,你应该尽可能避免在ViewWillAppear方法上这样做,因为当它被调用时,这意味着iPhone已经准备好向用户显示UIView,你在这里做的任何重量将以非常明显的方式影响性能(如动画延迟等)。

3)ViewDidAppear:最后,我使用ViewDidAppear来启动需要很长时间才能执行的新线程,比如执行webservice调用以获取上面表单的额外数据。好的是因为视图已经存在并且正在向用户显示,所以在获取数据时,您可以向用户显示一条漂亮的“等待”消息。