2

サーバーからいくつかのデータを取得して保存し、NSDictionary それで初期化NSMutableDictionaryNSDictionaryます。

NSDictionary  * const received = [self serverData];
NSMutableDictionary * const results = [NSMutableDictionary dictionaryWithDictionary:received];

また、サーバーから空の JSON を取得した結果、空の JSON を取得した場合、空の JSON をNSDictionaryどのように使用できますdictionaryWithDictionaryか? 私はこれを使います

NSDictionary * const received = [self serverData];
NSMutableDictionary * const results;
if (![received count]) {
    results = [NSMutableDictionary dictionary];
}
else
{
    results = [NSMutableDictionary dictionaryWithDictionary:received];
}

しかし、それはコードの匂いのようです。もっとエレガントなソリューションがあるかもしれませんか?

4

3 に答える 3

5

そもそもあなたは元気でした。

NSDictionary* received = [self serverData];
NSMutableDictionary* results = [NSMutableDictionary dictionaryWithDictionary:received];

あなたが望むことをします。receivednil または空の場合でもresults、空の NSMutableDictionary になります。

于 2012-12-05T16:02:24.413 に答える
1

NSDictionaryそのような安全な設定を提供するカテゴリを作成します。

+ (NSMutableDictionary *)safeDictionaryWithDictionary:(NSDictionary *)dictionary
{
    return [NSMutableDictionary dictionaryWithDictionary:(dictionary ? dictionary : @{});
}
于 2012-12-05T15:43:35.553 に答える
0

「キーなし」で辞書に項目を作成することはできません。キーは nil 以外の文字列でなければなりません。

アイテムがない場合、オブジェクトもキーも設定されていないため、setObject:nil forKey:nil

于 2012-12-05T15:39:24.673 に答える