2012-09-16 6 views
5

JSONフィードから出席している出席者という変数があります。辞書からブール値をチェックしています。

attending var type is: __NSCFBoolean 

これは、変数のクラス型を取得するには、[VARNAMEクラス]を使用して行われます:オブジェクトが、私はこれをのNSLogと解釈されているもの、クラスタイプを確認した後。

だから私はので、私はこのコードを書く....これが真か偽であるかどうかを確認したい..:

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

それは私にこれを言っ黄色のテキストエラーが発生しますので、私はそれをコンパイルカントしかし:

enter image description here

私が間違って何をしているのですか?どうしたらいいですか?ただ、フィード内のデータを追加するためには、次のようになります。

{ 
    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"; 
}, 

答えて

18

ブールや他のコンテナクラスがNSNumberオブジェクトにカプセル化されている(ためNSNumberドキュメントを参照してください詳細)

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

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

続きを読むの値について、それらがカプセル化され、どのように私のコレクションクラスin the Apple documentation here

+0

あなた先生は伝説です!私の質問に答えて、私のクエストは完了です。あなたは100経験を得る。 – jimbob

+0

助けてよかった;-) – AliSoftware

+0

大きな助け、ありがとう。私はこれが迅速に1,2,3になったのだろうかと思っています。 – eddyce

2

BOOL」タイプは、Objective Cのオブジェクトではなく、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]; 
    } 
} 
関連する問題