34

私はNSDictionary次のようなものを持っています:

{
"Item1" = 2.4;
"Item2" = 5.5;
"Item3" = 15.6;
}

このNSDictionary項目をテーブル ビューで使用するには、それを に転送する必要がありNSArrayます。よろしいですか?

だから私は試します:

NSDictionary *dict = [myDict objectForKey:@"items"];

for (id item in dict) {
    [_myArray addObject:[dict objectForKey:item]];
}

しかし、_myArray は空のままですか? 私は何を間違っていますか?

4

11 に答える 11

224
NSArray * values = [dictionary allValues];
于 2010-02-16T16:04:36.317 に答える
43
NSArray *keys = [dictionary allKeys];
NSArray *values = [dictionary allValues];
于 2012-04-25T11:17:15.600 に答える
29

投稿したコードの技術的な問題は別として、次のように尋ねました。

このディクショナリ項目をテーブル ビューで使用するには、それを NSArray に転送する必要があります。よろしいですか?

答えは次のとおりです。必ずしもそうではありません。UITableViewUITableViewDataSource、またはの機械に固有のものは何もありません。UITableViewDelegateつまり、データ配列内にある必要があります。テーブル内の行数と、各行に表示されるデータをシステムに伝えるために、さまざまなメソッドを実装する必要があります。多くの人は、配列のような順序付けられたデータ構造を使用してこれらの質問に答える方が、はるかに自然で効率的だと感じています。しかし、そうしなければならないという要件はありません。これらのメソッドを実装するコードを、最初に使用した辞書で記述できる場合は、お気軽に!

于 2010-02-16T16:14:12.607 に答える
4

ディクショナリ内のすべてのオブジェクトの配列を作成し、それを TableView のデータソースとして使用できます。

NSArray *aValuesArray = [yourDict allValues];
于 2014-02-14T11:33:15.010 に答える
3

コード スニペット 1:

NSMutableArray *array = [[NSMutableArray alloc] init];
NSArray * values = [dictionary allValues];
[array addObject:values];

コード スニペット 2:さらに追加する場合

[array addObject:value1];
[array addObject:value2];
[array addObject:value3];

等々

また、辞書のキー値を配列に格納することもできます

NSArray *keys = [dictionary allKeys];
于 2014-11-18T14:01:59.747 に答える
2

ここで起こりうることがいくつかあります。

リストした辞書はmyDictですか? その場合、キーが のオブジェクトはなく@"items"dict変数は nil になります。直接繰り返す必要がありますmyDict

チェックするもう 1 つのこと_myArrayは、NSMutableArray の有効なインスタンスであるかどうかです。nil の場合、addObject:メソッドは黙って失敗します。

最後に確認することは、辞書内のオブジェクトが NSNumbers (またはその他の非プリミティブ型) に適切に格納されていることです。

于 2010-02-16T16:02:58.337 に答える
1

辞書内のすべてのオブジェクトを取得するには、次のenumerateKeysAndObjectsUsingBlock:ように使用することもできます。

NSMutableArray *yourArray = [NSMutableArray arrayWithCapacity:6];
[yourDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    [yourArray addObject:obj];
}];
于 2011-12-09T02:06:34.577 に答える
1

このコードは実際には に値を追加するために使用されdictionarythroughデータはArrayに従って に追加されますKey

NSMutableArray *arr = [[NSMutableArray alloc]init];
NSDictionary *dicto = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"Hello",@"StackOverFlow",@"Key1",@"StackExchange",@"Key2", nil];
NSLog(@"The dictonary is = %@", dicto);
arr = [dicto valueForKey:@"Key1"];
NSLog(@"The array is = %@", arr);
于 2015-09-07T06:43:34.330 に答える
1

NSMutableArray を初期化するだけです

NSMutableArray  *myArray = [[NSMutableArray alloc] init];
于 2015-04-24T05:36:50.460 に答える
1
+ (NSArray *)getArrayListFromDictionary:(NSDictionary *)dictMain paramName:(NSString *)paramName
{
    if([dictMain isKindOfClass:[NSDictionary class]])
    {
        if ([dictMain objectForKey:paramName])
        {
            if ([[dictMain objectForKey:paramName] isKindOfClass:[NSArray class]])
            {
                NSArray *dataArray = [dictMain objectForKey:paramName];

                return dataArray;
            }
        }
    }
    return [[NSArray alloc] init];
}

お役に立てれば!

于 2018-05-08T07:45:14.317 に答える