1

Webサービスを介して取得したJSONを解析しようとしています。ロジックは:

id jsonObject = ....;      //This can be string or array 

if([jsonObject class] == [NSString class] || [jsonObject class] == [NSMutableString class]{

// DO some thing
}
else if([jsonObject class] = [NSArray class] || [jsonObject class] == [NSMutableArray class]{

// Do some thing else
}

しかし、要素の1つについて、私は奇妙な問題に遭遇しました。この要素のクラスはNSArrayである必要がありますが、コードを実行すると、クラスは__NSArrayMと表示されます。これは、2番目のifブロックとは一致しません。

誰かが私が間違っていることを教えてもらえますか

4

1 に答える 1

5

代わりに使用してください:

if ([jsonObject isKindOfClass:[NSArray class]]) {
}

クラス クラスタの場合、これが唯一の適切な方法です。isKindOfClass は、オブジェクトがクラスのインスタンスであるか、そのサブクラスの 1 つであるかをチェックします。同様のメソッド isMemberOfClass: があります。これは、厳密なクラスの等価性/メンバーシップをテストします (つまり、サブクラスのインスタンスは等価と見なされません)。

于 2012-07-23T17:29:23.817 に答える