7

私は、JSON フィードから取得された Attending という変数を持っています。オブジェクトが I NSLog として解釈されているクラスの種類を確認した後、次のようにします。

attending var type is: __NSCFBoolean

これは、変数のクラス タイプを取得するために [varname class] を使用して行われます。

だから私はこれが真か偽かを見たい....だから私はこのコードを書く..:

if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){

ただし、次のような黄色のテキスト エラーが表示されるため、コンパイルできません。

ここに画像の説明を入力

私は何を間違っていますか?どうすればこれを修正できますか。フィードにデータを追加すると、次のようになります。

    {
    attendees =         (
    );
    attending = 1;
    date = "2012-09-24 09:11:00";
    id = 504;
    lessonHTML = "somehtml.";
    name = "Sup";
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0";
},
    {
    attendees =         (
    );
    attending = 1;
    date = "2012-09-24 09:11:00";
    id = 503;
    lessonHTML = "somehtml.";
    name = "Sup";
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0";
},
    {
    attendees =         (
    );
    attending = 0;
    date = "2012-09-24 09:11:00";
    id = 508;
    lessonHTML = "somehtml.";
    name = "Sup";
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0";
},
    {
    attendees =         (
    );
    attending = 1;
    date = "2012-09-24 09:11:00";
    id = 509;
    lessonHTML = "somehtml.";
    name = "Sup";
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0";
},
    {
    attendees =         (
    );
    attending = 0;
    date = "2012-09-24 09:11:00";
    id = 505;
    lessonHTML = "somehtml.";
    name = "Sup";
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0";
},
    {
    attendees =         (
    );
    attending = 1;
    date = "2012-09-24 09:11:00";
    id = 506;
    lessonHTML = "somehtml.";
    name = "Sup";
    youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0";
},
4

2 に答える 2

22

ディクショナリのブール値と他のコンテナ クラスはNSNumberオブジェクトにカプセル化されます (詳細については、NSNumberドキュメントを参照してください) 。

値を抽出するにはboolValue、辞書から取得したオブジェクトにメッセージを送信し、YES/NO と比較する必要があります。

NSNumber* attendingObject = [[events objectAtIndex:indexPath.row] objectForKey:@"attending"];
if ([attendingObject boolValue] == YES)
{
    ...
}

値とそれらがどのようにカプセル化されるかについて詳しくは、こちらの Apple ドキュメントの I コレクション クラスを参照してください。

于 2012-09-16T21:38:51.103 に答える
2

" BOOL"タイプはObjectiveCオブジェクトではなく、Cスタイルのタイプです。

NSNumber" "オブジェクトとして辞書に保存されます。

したがって、代わりに何をする必要がありますか?

if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){

このようなものです:

BOOL attending = NO; // assume NO to start with
NSDictionary * lessonDictionary = [_events objectAtIndex: indexPath.row];
if(lessonDictionary)
{
     NSNumber * attendingObject = [lessonDictionary objectForKey: @"attending"];
     if(attendingObject)
     {
          attending = [attendingObject boolValue];
     }
}
于 2012-09-16T21:37:29.437 に答える