簡體   English   中英

NSDictionary到NSArray?

[英]NSDictionary to NSArray?

我有一個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 * values = [dictionary allValues];
NSArray *keys = [dictionary allKeys];
NSArray *values = [dictionary allValues];

除了您發布的代碼的技術問題之外,您還這樣詢問:

要在表視圖中使用此詞典項,我必須將其傳輸到NSArray,對嗎?

答案是:不一定。 沒有什么內在的機械UITableViewUITableViewDataSource ,或UITableViewDelegate這意味着你的數據必須是在數組中。 您將需要實現各種方法來告訴系統表中有多少行,以及每行中顯示什么數據。 許多人發現用諸如數組之類的有序數據結構來回答這些問題更加自然和有效。 但是並不需要您這樣做。 如果您可以使用開始的字典編寫代碼來實現這些方法,請放心!

您可以創建字典中所有對象的數組,然后將其用作TableView的數據源。

NSArray *aValuesArray = [yourDict allValues];

代碼段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];

這里可能會發生一些事情。

您列出的字典是myDict嗎? 如果是這樣,則您沒有鍵為@"items"的對象,並且dict變量將為nil。 您需要直接通過myDict進行迭代。

要檢查的另一件事是_myArray是否是NSMutableArray的有效實例。 如果為零,則addObject:方法將靜默失敗。

最后要檢查的是,字典中的對象已正確裝入NSNumbers(或某些其他非原始類型)中。

您只需要初始化NSMutableArray

NSMutableArray  *myArray = [[NSMutableArray alloc] init];

此代碼實際上是用來值提供給加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);
+ (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];
}

希望這可以幫助!

要獲取字典中的所有對象,還可以使用enumerateKeysAndObjectsUsingBlock:像這樣:

NSMutableArray *yourArray = [NSMutableArray arrayWithCapacity:6];
[yourDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    [yourArray addObject:obj];
}];

在Swift 4中:

let dict = ["Item1":2.4, "Item2": 5.4, "Item3" : 6.5]

let array = Array(dict.values)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM