2011-12-09 8 views
0

JSONから解析されているnull値の問題があります。私はエンティティをUILabelにリンクしているので、null型であると、アプリケーションがクラッシュします。すべてのリンクセットでnullをチェックするよりも、ビューにnull値を表示する良い方法はありますか?JSONのNull値

おかげ

答えて

2
if (objectHoldingJsonValue == [NSNull null]) { 
    // you have a null value, move in other value 
} 
+1

注ので、私は' -isKindOfClassを使用して、実際にお勧めします: '。 –

3

クラスNSNullは、このような状況のために意図されます。これは、値null(0x0のは)(NSArrayNSDictionaryなど)許可されていないコレクションで使用されることの

使用方法は、次のようにされています

id myValue = // get value from collection 

// method one (recommended, as you could have more than one instance of NSNull) 
if ([myValue isKindOfClass:[NSNull class]) 
{ 
    // null value 
} 

// method two, not recommended 
if (myValue == [NSNull null]) 
{ 
    // null value 
} 
+0

それは解決のためのものですが、辞書または配列内にヌルとしてのエンティティがある場合はどうなりますか? nullよりもいくらかの価値を生み出すためにすべてを反復する必要がありますか? – kforkarim

0

あなたが横断避けたい場合JSONオブジェクト内のコレクション、あなたはサブクラスUILabelができ、オーバー乗ることが(例えば、リチャードのアプローチを使用して)NULLであることに対して値を検証し、「テキスト」プロパティのセッターを:もちろん

- (void) setText:(NSString *)textValue 
{ 
    if ([textValue isKindOfClass:[NSNull class]]) textValue = nil; 
    [super setText:textValue];   
} 

、タクこの方法では、このNULL値が問題を引き起こす可能性のあるアプリケーションの他の状況を開いておくことができます。そのため、データモデルのコンテキストでの検証/スクラビングがおそらく望ましいでしょう。

0

JSON辞書からの根づきのための最も簡単な方法。 NSDictionaryのと連動し、可変である必要はありません:あなたはあなたのアプリケーションにNSNull` `の複数のインスタンスを持つことができます

[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 
    if ([obj isKindOfClass:[NSNull class]]) [dictionary setValue:[NSString stringWithString:@""] forKey:key]; 
} ];