繁体   English   中英

仅在所有其他代码完成后才如何运行代码?

[英]How to run code only after all other code is finished?

有点愚蠢的问题,写了一个完整的应用程序,但仍然不知道这一点...现在我有一个“删除帐户按钮”,它删除了所有用户的帖子并执行了返回到登录屏幕的搜索,但似乎并非全部帖子将被删除,因为它会在完成之前执行搜索。

有一种方法只能在删除用户的帖子后才执行segue吗? 与之类似,运行segue LAST。

func actionSheet(actionSheet: UIActionSheet, clickedButtonAtIndex buttonIndex: Int) {
    if buttonIndex == 1 { // Post One Pic
        //self.performSegueWithIdentifier("postimage1segue", sender: self)
        var query = PFQuery(className: "Post")
        query.whereKey("userId", equalTo: PFUser.currentUser()!.objectId!)
        query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
            if let objects = objects {
                for object in objects {
                    PFObject.deleteAllInBackground(objects)
                }
            }
        })

        var query1 = PFQuery(className: "PrivatePost")
        query1.whereKey("userId", equalTo: PFUser.currentUser()!.objectId!)
        query1.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
            if let objects = objects {
                for object in objects {
                    PFObject.deleteAllInBackground(objects)
                }
            }
        })

        PFUser.currentUser().deleteInBackground()
        performSegueWithIdentifier("accountdeletedsegue", sender: self)
    }
}

我不确定PFUser是否具有deleteInBackgroundWithBlock:方法,但是您也可以使用Grand Central Dispatch。

这是Obj-C中的示例:

dispatch_group_t group = dispatch_group_create();
dispatch_queue_t bg_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_group_async(group, bg_queue, ^{
    // do something 
});

dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    //when done do something else on main
});

编辑:Swift GCD组

var downloadGroup = dispatch_group_create()
dispatch_group_enter(group)

// Do something

dispatch_group_leave(group)

dispatch_group_notify(group, GlobalMainQueue) {
    //when something is done do something else on main queue
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM