[問題] block包在function中

看板MacDev作者 (valda)時間9年前 (2014/09/04 17:42), 編輯推噓3(301)
留言4則, 1人參與, 最新討論串1/1
最近寫的APP跟FB有強烈的相關性 常需要使用facebook graph api 所以想說在base class中 create method專跟facebook graph api要資料 -(id)requireToFB:(id)parameter { __block id finalResult=nil; FBRequest *request = [FBRequest requestForGraphPath:parameter]; [request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { if ([result[@"data"]count]) { finalResult=result[@"data"]; for (id data in result[@"data"]) { if ([data[@"name"] isEqualToString:@"Profile Pictures"]) { NSLog(@"The Profile Pictures ID:%@",data[@"id"]); } } } }]; return finalResult; } 不管我怎麼取回傳都是nil 但是單獨放在程式中執行,卻又可以 有人知道這樣怎麼解呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.186.235 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1409823740.A.6FC.html

09/04 17:55, , 1F
因為程式還沒取到值 就已經回傳了
09/04 17:55, 1F

09/04 17:56, , 2F
可以用block來解決
09/04 17:56, 2F

09/04 17:58, , 3F
(void(^)(id parameter))completionBlock
09/04 17:58, 3F

09/04 17:59, , 4F
取到值completionBlock(finalResult)
09/04 17:59, 4F
文章代碼(AID): #1K23FyRy (MacDev)