当我知道值为1时,ObjectForKey总是返回null或0

时间:2012-03-02 12:01:59

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

我已调用使用

检索用户的有效权限
self.permissionRequest = [facebook requestWithGraphPath:@"me/permissions" andDelegate:self];

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

在代表中我打电话:

        if (request == self.permissionRequest) {
        DLog(@"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);

我得到'null'。

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

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

1 个答案:

答案 0 :(得分:3)

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

尝试

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

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

id *key

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