0
我目前有以下兩種方法,第一種方法僅在用戶是新用戶時通過將用戶首選項保存到雲來執行初始設置,第二種方法每當用戶通過基於用戶的偏好執行查詢來使用應用程序時被調用。確保塊內的方法在調用另一個方法之前完成執行
[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
保存在塊之前,和因此拉錯了數據。如何確保設置塊在getUserPrefsAndDoStuff
之前完成執行。
很好的答案,但有doInitialSetupsForNewUser傳遞一些成功的概念,也許(BOOL成功,NSError *錯誤)。 – danh
完美,優雅的解決方案! @danh - 你是否介意修改答案以通過包含成功的概念來展示你的意思?我對iOS非常陌生,所以具體的例子有很大的幫助 - 謝謝你們兩位! – daspianist
@daspianist好的。我在沒有編譯器的情況下進行了編輯,但它通過了桌面檢查。 – danh