次のような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は空のままですか?何が間違っていますか?
投稿したコードの技術的な問題は別として、次のように尋ねました。
この辞書項目をテーブルビューで使用するには、NSArrayに転送する必要がありますか?
答えは、必ずしもそうではありません。 UITableView
、UITableViewDataSource
、またはUITableViewDelegate
の機構に固有のものはありません。つまり、データがあるが配列にあることを意味します。テーブルに含まれる行の数と各行に表示されるデータをシステムに伝えるために、さまざまなメソッドを実装する必要があります。多くの人は、配列のような順序付けられたデータ構造でこれらの質問に答えることがはるかに自然で効率的だと感じています。しかし、要件はありません。あなたが始めた辞書でそれらのメソッドを実装するためのコードを書くことができたら、お気軽に!
NSArray * values = [dictionary allValues];
NSArray *keys = [dictionary allKeys];
NSArray *values = [dictionary allValues];
辞書内のすべてのオブジェクトの配列を作成し、TableViewのデータソースとして使用できます。
NSArray *aValuesArray = [yourDict allValues];
コードスニペット1:
NSMutableArray *array = [[NSMutableArray alloc] init];
NSArray * values = [dictionary allValues];
[array addObject:values];
Code Snippet2:さらに追加したい場合
[array addObject:value1];
[array addObject:value2];
[array addObject:value3];
等々
また、辞書のキー値を配列に保存できます
NSArray *keys = [dictionary allKeys];
ここで起こる可能性のあることがいくつかあります。
リストした辞書はmyDict
ですか?その場合、@"items"
のキーを持つオブジェクトは存在せず、dict
変数はnilになります。 myDict
を直接反復処理する必要があります。
もう1つ確認すべきことは、_myArray
がNSMutableArrayの有効なインスタンスであるかどうかです。 nilの場合、addObject:
メソッドは警告なしに失敗します。
最後に確認すべきことは、辞書内のオブジェクトがNSNumbers(または他の非プリミティブ型)に適切に含まれていることです。
+ (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];
}
お役に立てれば!
NSMutableArrayを初期化するだけです
NSMutableArray *myArray = [[NSMutableArray alloc] init];
このコードは、実際にdictionary
およびthrough
に値を追加し、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);
辞書内のすべてのオブジェクトを取得するには、enumerateKeysAndObjectsUsingBlock:
そのようです:
NSMutableArray *yourArray = [NSMutableArray arrayWithCapacity:6];
[yourDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[yourArray addObject:obj];
}];
In Swift 4:
let dict = ["Item1":2.4, "Item2": 5.4, "Item3" : 6.5]
let array = Array(dict.values)