Swift:如果PFObject = nil,则执行segue。

时间:2015-06-13 10:20:06

标签: ios swift parse-platform segue pfobject

目前,我已在解析后端同步用户及其数据。所以我想要做的是如果用户没有说明他们的用户详细信息,则会显示用户详细信息页面。因此,将有一个登录页面将引导您进入受保护页面(将显示用户详细信息),如果没有要检索的详细信息,该页面将执行到用户详细信息页面的segue。

var query = PFQuery(className:"UserSettings")
    var CurrentUser = PFUser.currentUser()
    query.whereKey("user", equalTo: CurrentUser!)
    query.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in

        if objects == nil {
          self.performSegueWithIdentifier("fillUserDetails", sender: self)
        }

但是,segue似乎没有执行,它仍然保留在受保护的页面上,而不是将新用户定向到用户详细信息页面。任何帮助将非常感谢并提前感谢。

2 个答案:

答案 0 :(得分:0)

该块在后台线程上执行。当您更新UI时,您应该在主线程上执行此操作。尝试将performSegueWithIdentifier包装在这样的块中:

var query = PFQuery(className:"UserSettings")
var CurrentUser = PFUser.currentUser()
query.whereKey("user", equalTo: CurrentUser!)
query.findObjectsInBackgroundWithBlock {
    (objects: [AnyObject]?, error: NSError?) -> Void in

    if objects == nil {
        dispatch_async(dispatch_get_main_queue()) {
            self.performSegueWithIdentifier("fillUserDetails", sender: self)
        }
    }

答案 1 :(得分:0)

添加对象大小的检查并且为空,因为在请求中发生任何错误时对象将为null,否则对象将不为null但它可以有0个数据。

swift -

if objects == nil || objects.size() == 0 {

          self.performSegueWithIdentifier("fillUserDetails", sender: self)

}