【问题标题】:keeping values returned from grap api request保留从图形 api 请求返回的值
【发布时间】:2012-11-19 12:21:09
【问题描述】:

我使用以下代码向图形 api 发送请求并将其显示在标签中

        [FBRequestConnection startWithGraphPath:@"40123148903?fields=picture" completionHandler:^(FBRequestConnection *connection, id<FBGraphObject> result, NSError *error)
         {
             if(!error)
             {
                  self.tryLabal.text = [[[result objectForKey:@"picture"] objectForKey:@"data"]objectForKey:@"url"];

             }
         }
         ];

问题是它只允许我使用块内的图形对象。我想保留返回的结果。

我尝试声明一个 id 属性并为其分配结果 id

self.tryGraphObject = result;

但这似乎不起作用。我究竟做错了什么?如何保存通话中的信息以备后用?

【问题讨论】:

    标签: ios facebook sdk


    【解决方案1】:

    您可以使用来自 facebook 委托的方法,例如

    • (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {}

    【讨论】:

    • 这是来自 FBRequestDelegate 的方法。您可以覆盖它并在此处保存您的数据。在任何请求之后 - 如果您收到成功的响应,将调用此方法。
    • 但是这里的响应只是一个url,我如何从中获取对象?我觉得很奇怪,他们只让你在块内的对象上工作
    【解决方案2】:

    对不起。我的错。正确的方法是 - (void)request:(FBRequest *)request didLoad:(id)result

    示例

    请求
    [facebook requestWithGraphPath:@"me/friends" andDelegate:self];

    响应
    - (void)request:(FBRequest *)request didLoad:(id)result {
    //好的,所以它是一个包含一个元素 (key="data") 的字典,它是一个字典数组,每个都有“name”和“id”键
    items = [[(NSDictionary *)result objectForKey:@"data"]retain];
    for (int i=0; i NSDictionary *friend = [items objectAtIndex:i];
    long long fbid = [[friend objectForKey:@"id"]longLongValue];
    NSString *name = [friend objectForKey:@"name"];
    NSLog(@"id: %lld - 名称: %@", fbid, name);
    }
    }

    【讨论】:

    • 我认为这对于 sdk 3.1 是不可行的。似乎在 3.1 版本而不是“with delegate”中,他们将其更改为那个愚蠢的块“with handler”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多