【问题标题】:ObjectForKey always returning null or 0 when I know the value to be 1当我知道值为 1 时,ObjectForKey 总是返回 null 或 0
【发布时间】:2012-03-02 20:07:51
【问题描述】:

我已使用

调用以检索用户的活动权限
self.permissionRequest = [facebook requestWithGraphPath:@"me/permissions" andDelegate:self];

(我设置了 FBRequest 对象,以便在委托方法中识别它)

在我调用的委托中:

        if (request == self.permissionRequest) {
        DLog(@"Result: %@", result);

    }

我得到了一个很好的活动权限打印:

结果:{ 数据 = ( { 书签 = 1; “创建注释” = 1; 电子邮件 = 1; 安装 = 1; “照片上传”= 1; “发布流” = 1; “share_item”=1; “状态更新”= 1; “视频上传”= 1; } ); }

到目前为止一切顺利。

但我只想确定“publish_stream”是打开还是关闭。

如果我打电话

id *key = [result objectForKey:@"publish_stream"];
int keyInt = [key integerValue];
DLog(@"Key: %i", keyInt);

我总是得到 0。

如果我打电话

NSString *key = [result objectForKey:@"publish_stream"];
    DLog(@"Key: %@", key);

我得到'null'。

我做错了什么??为什么我无法获取 publish_stream 键的值?我也尝试过使用 valueForKey: 得到相同的结果。

一定有一个非常简单的解决方案?

【问题讨论】:

  • 第四个代码块中的键应该是id,而不是id*。不是问题,而是问题。
  • 您好,我想使用社交框架实现相同的功能。我怎样才能做到这一点?

标签: objective-c facebook-graph-api nsdictionary


【解决方案1】:

我认为您的结果字典只有一个键 data,其值是另一个字典,其他所有内容都在其中。

试试

[[result objectForKey:@"data"] objectForKey:@"publish_stream"];

你还有另一个错误:你写了

id *key

id 已经是一个指针。除非你想要一个双指针,否则你不应该在它后面加上 *

【讨论】:

  • 太棒了,谢谢!唯一值得注意的是它必须是 valueForKey:@"publish_stream" 否则它会大惊小怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
相关资源
最近更新 更多