2012-03-02 46 views
1

我打了一个电话使用ObjectForKey总是返回null或0,当我知道这个值是1

self.permissionRequest = [facebook requestWithGraphPath:@"me/permissions" andDelegate:self]; 

检索用户的活动权限(我设置FBRequest对象,以便我可以识别它的委托方法)

在委托我打电话:

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

    } 

而且我得到一个不错的打印出积极的权限:

Result: { data = ( { bookmarked = 1; "create_note" = 1; email = 1; installed = 1; "photo_upload" = 1; "publish_stream" = 1; "share_item" = 1; "status_update" = 1; "video_upload" = 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); 

我得到 '空'。

我在做什么错?为什么我无法获得publish_stream键的值?我也尝试使用valueForKey:具有相同的结果。

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

+0

在第四个代码块中,键应该是'id',而不是'id *'。不是问题,而是一个问题。 – zmccord 2012-03-02 12:05:35

+0

你好,我想用社交框架来实现同样的功能。我怎么能做到这一点? – iPhone 2015-01-16 12:58:53

回答

3

我认为你的结果字典只有一个键,data,其价值是另一个字典,其他一切都在里面。

尝试

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

你也有另一个错误:你写

id *key 

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

+0

辉煌,谢谢!唯一值得注意的是它必须是valueForKey:@“publish_stream”,否则它会引起大惊小怪。 – Smikey 2012-03-02 13:33:36