3

だから私はツイッターのタイムラインを解析しています。JSON レスポンスには「following」というフィールドがあります。true または false である必要があります。

ただし、フィールドが欠落している場合があります。

私がする時:

NSLog(@"%@", [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]);

これは出力です:

1
1
0
0
1
<null>
1
1

では、これらの値を確認するにはどうすればよいでしょうか。

4

4 に答える 4

13

NSArraynilnil はコレクションが終了するときの「センチネル値」であるため、他のコレクションは値として取ることができません。以下を使用して、オブジェクトが null かどうかを確認できます。

if (myObject == [NSNull null]) {
    // do something because the object is null
}
于 2012-04-09T17:48:59.463 に答える
3

フィールドが見つからない場合、NSDictionary -objectForKey: は nil ポインターを返します。次のように nil ポインターをテストできます。

NSNumber *following = [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"];

if (following)
{
    NSLog(@"%@", following);
}
else
{
    // handle no following field
    NSLog(@"No following field");
}
于 2012-04-09T17:50:24.437 に答える
-1

null のタイムライン要素ではありません。null の「ユーザー」ディクショナリまたは「次の」オブジェクトのいずれかです。json/dictionary の乱雑さの一部をカプセル化するユーザー モデル クラスを作成することをお勧めします。実際、iOS 用のオープンソース Twitter API が見つかるはずです。

いずれにせよ、コードは次のように読みやすくなります。

TwitterResponse *response = [[TwitterResponse alloc] initWithDictionary:[timeline objectAtIndex:i]];
NSLog(@"%@", response.user.following);

TwitterResponse上記は readonly プロパティTwitterUser *userを実装し、次に を実装しNSNumber *followingます。NSNumbernull 値 (JSON 応答の空の文字列) が許可されるため、使用します。

これが正しい軌道に乗るのに役立つことを願っています。幸運を!

于 2012-04-09T18:07:41.683 に答える
-1

配列にnull値が含まれていることを確認するには、このコードを使用します。

if ([array objectAtIndex:0] == [NSNull null])
{
//do something
}
else
{
}
于 2013-06-26T06:38:05.130 に答える