1

既存の配列を取得し、そこから nil 値を削除して、配列にデータを入力しようとしています。配列は、http 呼び出しの JSON 応答から取り込まれました。NSArray配列の最後に null 値がある場合があり、その値を削除してコードのどこでも処理する必要がないようにする最も簡単な方法は、 をfilteredArrayUsingPredicate:使用して変数をインスタンス変数に割り当てることです。クラス。

NSArray *respAgencyList = (NSArray*) [JSON valueForKeyPath:@"xml.path.to.data" ];
NSLog(@"data before filter: %@", respAgencyList); 
// prints: ( { domain: "foo.com", name:"foobar"}, "<null>" });
if (respAgencyList != nil && respAgencyList.count > 0) {
    agencies = [respAgencyList filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
            NSLog(@"Evaluated object is %@", evaluatedObject); //prints <null> for the null value
            BOOL ret = evaluatedObject != nil;
            return ret;

        }]];
}

上記のコードでは、戻り値は常にYESです。ただし、デバッガーをオンにしてステップ実行すると、次のように表示されます。

evaluatedObject = id 0x00000000

ここに画像の説明を入力

これはnull/nil値ではありませんか? と比較して、この値の違いは何nilですか?

4

2 に答える 2

2

また、適切なオブジェクトであるため NSNull、に配置できるも確認する必要があります。NSArray

BOOL ret = (evaluatedObject != nil && [evaluatedObject isKindOfClass:[NSNull class]] == NO);
于 2013-04-15T18:28:05.867 に答える