我目前有以下两种方法,第一种方法仅在用户是新用户时调用,并通过将用户首选项保存到云来执行初始设置,第二种方法在用户每次使用应用程序时通过执行基于查询的查询来调用用户的偏好。
[self doInitialSetupsForNewUser]; //Only happens for new user. Performs query on a block
[self getUserPrefsAndDoStuff]; //For all users
虽然该方法getUserPrefsAndDoStuff
工作正常,但如果用户是全新的并且必须首先调用设置方法,则它无法完成工作。在内部doInitialSetupsForNewUser
,我使用该块对 Facebook 进行以下调用:
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error){ ... }
}];
我的问题是,由于块结构,getUserPrefsAndDoStuff
在用户的首选项被下载并保存在块中之前过早调用doInitialSetupsForNewUser
,因此正在提取不正确的数据。如何确保 setup 块在getUserPrefsAndDoStuff
.