У меня есть два NSArray
. Это myArray
& alphabets
. myArray
имеют некоторую ценность и alphabets
имеют список всех алфавитов.Добавить значение и ключ в NSDictionary из NSMutableArray
У меня также есть 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
становятся пустым !, только перед началом 2-го for loop
для B
. Не знаете, почему? Я что-то упускаю?
Ответьте, если вы понимаете мою проблему. Большое спасибо заранее.
Выполняется '[objArray removeAllObjects];' каждая итерация цикла. Какой еще результат вы ожидаете? Ваша ошибка повторного использования 'objArray'. – Avi
Спасибо, что комментировали. Я использовал его, потому что в противном случае он добавит все значения для каждого отдельного ключа. Поэтому я хочу сделать его пустым. Я также использовал objArray = nill; Но это не работает. Есть ли у вас какие-либо предложения по этому поводу? – Tulon
Я уже говорил вам: вы повторно используете objArray'. Не делай этого. – Avi