gpt4 book ai didi

facebook - 从完成处理程序获取数据 - FBRequestConnection

转载 作者:行者123 更新时间:2023-11-30 10:15:29 27 4
gpt4 key购买 nike

我找到了很多关于completionHandlers的信息。但是,我还不知道在这种情况下如何处理。也许你可以帮助我。

我正在尝试获取所有 Facebook 好友的列表并将其存储在数组中。

获取FacebookFriends

func getFacebookFriends() -> NSMutableArray
{

var retFriendIDs:NSMutableArray = []

FBRequestConnection.startForMyFriendsWithCompletionHandler {
(connection:FBRequestConnection!, result: AnyObject!, error:NSError!) -> Void in

if (error == nil){
var resultdict = result as! NSDictionary
self.data = resultdict.objectForKey("data") as! NSArray

var friendIDs:NSMutableArray = []
for (var i = 0; i < self.data.count; i++) {
let valueDict : NSDictionary = self.data[i] as! NSDictionary
let id = valueDict.objectForKey("id") as! String
friendIDs.addObject(id as String)
}
retFriendIDs = friendIDs
}
}
return retFriendIDs
}

由于这是一个completionHandler,我知道返回会在 block 完成之前触发。但是,例如,我如何实现返回以使用此函数中的列表呢?

findFacebookFriendsInBackend

func findFacebookFriendsInBackend() -> [AnyObject]{
println("findFacebookFriendsInBackend")
var retFriends:[AnyObject] = []

let fbFriends:NSMutableArray = getFacebookFriends()

var friendQuery = PFUser.query()
// look for friends in Parse
friendQuery!.whereKey("fbId", containedIn: fbFriends as [AnyObject])

friendQuery!.findObjectsInBackgroundWithBlock{
(friends, error) -> Void in
if error == nil {
retFriends = friends as [AnyObject]!
}
}
return retFriends
}

然后在像这样的简单函数中使用它:

iterateOverFriends

func iterateOverFriends(friends:[AnyObject]!){
for i in friends {
doSomething(i)
}
}

调用电话

iterateOverFriends(findFacebookFriendsInBackend())

最佳答案

简短回答:你不知道。不可能。使用异步方法时,返回时结果不存在。

你必须调整你的想法。

重写这个方法:

func findFacebookFriendsInBackend() -> [AnyObject]{

像这样:

func findFacebookFriendsInBackend(#completion:
(friendsArray: [AnyObject]) -> ())

在新形式中,它采用 block 作为参数。编写该函数,以便在构建好 friend 数组后调用该 block 。

新的调用看起来像这样

findFacebookFriendsInBackend()
{
(friendsArray) -> () in
iterateOverFriends(friendsArray)
}

(当您有一个以闭包作为最终参数的函数时,您可以在括号外使用闭包来调用它。)

我在 this thread 中写了一个很长的答案,包括一个工作示例项目。 .

关于facebook - 从完成处理程序获取数据 - FBRequestConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30255636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com