我有两个NSArray
。他们是myArray
& alphabets
。 myArray
有一些价值,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
)第一个key
和value
变空! for loop
的第二个B
。不知道为什么?我错过了什么吗?
如果您了解我的问题,请回复。非常感谢。
答案 0 :(得分:1)
如果你单步执行它,你会看到你的finalDic是好的,直到[objArray removeAllObjects];
FinalDic指向objArray。您需要编写创建临时对象或以不同方式编写它。