从NSMutableArray中添加NSDictionary中的值和键

时间:2016-01-19 17:37:06

标签: objective-c nsmutablearray nsarray nsdictionary nsmutabledictionary

我有两个NSArray。他们是myArray& alphabetsmyArray有一些价值,alphabets有所有字母的列表。

我还有NSMutableDictionary,称为finalDic。我想根据它的第一个后者添加myArray值,其中第一个值是它的关键。为此,我添加了一个名为NSMutableArray的额外objArray。以下是我的代码。

myArray = [[NSArray alloc] initWithObjects:
               @"Bangladesh",
               @"France",
               @"Italy",
               @"Canada",
               @"Austria",
               @"Germany",
               @"Bolivia",
               @"Argentina",
               @"England", nil];

NSArray *alphabets = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", nil];

    NSMutableDictionary *finalDic = [[NSMutableDictionary alloc] init];
    NSMutableArray *objArray = [[NSMutableArray alloc] init];
    int i;
    int k;

    for (i = 0; i < [alphabets count]; i++)
    {
        NSString *alp = [alphabets objectAtIndex:i];
        for (k = 0; k < [myArray count]; k++)
        {
            NSString *vlu = [myArray objectAtIndex:k];
            if([[myArray objectAtIndex:k] hasPrefix:[alphabets objectAtIndex:i]])
            {
                [objArray addObject:[myArray objectAtIndex:k]];
            }
        }

        if (objArray != nil)
        {
            [finalDic setObject:objArray forKey:[alphabets objectAtIndex:i]];
            [objArray removeAllObjects];
        }
    }
NSLog(@"finalDic %@", finalDic);

问题是我没有得到准确的结果。我收到了NSLog

finalDic {
A =     (
);
B =     (
);
C =     (
);
D =     (
);
E =     (
);
F =     (
);
G =     (
);
H =     (
);
I =     (
);
J =     (
);
K =     (
);
L =     (
);
M =     (
);
N =     (
);
O =     (
);
P =     (
);
Q =     (
);
R =     (
);
S =     (
);
T =     (
);
U =     (
);
V =     (
);
W =     (
);
X =     (
);
Y =     (
);
Z =     (
);
}

我调试代码并看到在添加第一个key之后,它的值(objArray)第一个keyvalue变空! for loop的第二个B。不知道为什么?我错过了什么吗?

如果您了解我的问题,请回复。非常感谢。

1 个答案:

答案 0 :(得分:1)

如果你单步执行它,你会看到你的finalDic是好的,直到[objArray removeAllObjects];

FinalDic指向objArray。您需要编写创建临时对象或以不同方式编写它。