首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个NSArrays按数组顺序添加到具有相应匹配项的NSMutableDictionary中

将多个NSArrays按数组顺序添加到具有相应匹配项的NSMutableDictionary中
EN

Stack Overflow用户
提问于 2013-08-29 02:34:25
回答 2查看 2.3K关注 0票数 2

我有两个数组,比如itemName和itemImages

代码语言:javascript
复制
NSArray *itemName = @[@"Blog", @"Missions", @"Subscriptions", @"Questions", @"Aide",@"Disconnect"];
NSArray *itemImages = @[@"ico-1",@"ico-2", @"ico-3", @"ico-4", @"ico-5", @"ico-6"];

我需要把它们加到字典里

代码语言:javascript
复制
 NSMutableDictionary *menuItemNameImage = [[NSMutableDictionary alloc] init];
 [menuItemNameImage setValue:itemName forKey:@"itemName"];
 [menuItemNameImage setValue:itemImages forKey:@"itemImages"];

 NSLog(@"%@", menuItemNameImage);

但是这使得下面的字典

代码语言:javascript
复制
{
    itemImages =     (
        "ico-1",
        "ico-2",
        "ico-3",
        "ico-4",
        "ico-5",
        "ico-6"
    );
    itemName =     (
        Blog,
        Missions,
        Subscriptions,
        Questions,
        Aide,
        Disconnect
    );
}

我更想要的是有人这样想:

代码语言:javascript
复制
{ 
  { 
    itemImages = "icon-1",
    itemName = Blog
  },
  { 
    itemImage = "icon-2",
    itemName = "Missions"
  }, ...
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-29 02:37:38

使用单个NSDictionary无法获得该结构--您需要一个NSArray of NSDictionary对象。

以下是您可以这样做的方法:

代码语言:javascript
复制
NSMutableArray *menuItemNameImage = [NSMutableArray array];
for (int i = 0 ; i != itemNames.count ; i++) {
    [menuItemNameImage addObject: @{
        @"itemName" : itemNames[i]
    ,   @"itemImage" : itemImages[i]
    }];
}
票数 2
EN

Stack Overflow用户

发布于 2013-08-29 02:44:13

您可以使用的是NSArray of NSDictionaries。每个字典都有两个条目:itemImageitemName

会是这样的:

代码语言:javascript
复制
NSArray *itemName = @[@"Blog", @"Missions", @"Subscriptions", @"Questions", @"Aide",@"Disconnect"];
NSArray *itemImages = @[@"ico-1",@"ico-2", @"ico-3", @"ico-4", @"ico-5", @"ico-6"];

NSMutableArray *menuItemNameImage = [NSMutableArray new];

for (NSInteger i = 0; i < itemName.count; i++) {
    NSMutableDictionary *itemNameImage = [NSMutableDictionary new];

    itemNameImage[@"itemName"] = itemName[i];

    //just a precaution if the array os images is smaller than the ones of names, to avoid unwanted crashes
    if (i < itemImages.count) { 
        itemNameImage[@"itemImage"] = itemImages[i];
    }

    [menuItemNameImage addObject:itemNameImage];
}

NSLog(@"%@", menuItemNameImage);

输出,如您所需:

代码语言:javascript
复制
(
    {
        itemImage = "ico-1";
        itemName = Blog;
    },
    {
        itemImage = "ico-2";
        itemName = Missions;
    },
    {
        itemImage = "ico-3";
        itemName = Subscriptions;
    },
    {
        itemImage = "ico-4";
        itemName = Questions;
    },
    {
        itemImage = "ico-5";
        itemName = Aide;
    },
    {
        itemImage = "ico-6";
        itemName = Disconnect;
    }
)

您可以访问这样的元素,例如:

代码语言:javascript
复制
NSString *firstItemName = menuItemNameImage[0][@"itemName"]; 
NSString *firstItemImage = menuItemNameImage[0][@"itemImage"]; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18501422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档