ObjectForKey всегда возвращает ноль или 0, когда я знаю, что значение равно 1 - PullRequest
1 голос
/ 02 марта 2012

Я позвонил, чтобы получить активные разрешения пользователя, используя

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

(я установил объект FBRequest, чтобы я мог его идентифицировать в методе делегата)

В делегатеЯ звоню:

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

    }

И я получаю хороший отпечаток из активных разрешений:

Результат: {data = ({bookmarked = 1; "create_note" = 1; электронная почта= 1; установлено = 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: с теми же результатами.

Должно быть замечательно простое решение?

1 Ответ

3 голосов
/ 02 марта 2012

Я думаю, что ваш словарь результатов имеет только один ключ, data, значение которого является другим словарем, а все остальное находится внутри него.

Попробуйте

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

У вас также есть другая ошибка: вы написали

id *key

id уже является указателем. Вы не должны ставить * после него, если вам не нужен двойной указатель.

...