В основном у меня есть массив объектов nsstring, таких как «A», L, L, A, H, A ,ПЛОХО. Вывод должен быть NSDictionary 0,3,5,7 ДЛЯ ОБОЗНАЧЕНИЯ A, 1,2 ДЛЯ KEY L 4 для ключевых H 6 для KEY B 8 для ключевых D.Как я могу сделать nsdictionary из него строковыми объектами в качестве ключа и массива postion как объекта для ключа
ответ
Это простой для- в петле, которая может выглядеть немного как это:
- (NSDictionary*)dictionaryFromArrayOfStrings:(NSArray*)array {
int idx = 1;
NSMutableDictionary *retVal = @{}.mutableCopy;
for (NSString *char in array) {
//reverse them for a dictionary of NSNumbers for a set of NSString keys
[retVal setObject:char forKey:@(idx)];
idx++;
}
return retVal;
}
интересный .. никогда не видел '@ {}. MutableCopy' before .. так же, как инициализация NSMutableDictionary, как и так:' NSMutableDictionary * retval = [NSMutableDictionary dictionaryWithCapacity: 0] '? – abbood
Также вы использовали forKey: @ (idx), а не forKey: idx? – abbood
Новые функции в Xcode. Первый - это словарный литерал, в котором я передаю сообщения для изменяемой копии (поэтому я получаю NSMutableDictionary). Второй бокс: возьмите любое число «ol» (int, float, long и т. Д.) И поместите его между @() и преобразуется в NSNumber. – CodaFi
вы не можете иметь массив, который имеет ключи и значения (т.е. NSDictonary 0,3,5,7 для ключа A) .. вы, что можно сделать с NSDictionary, далее, если у вас есть только набор значений .. тогда вы должны использовать массив для этого
Это то, что вы должны сделать:
NSDictionary* parent = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObjects:@"A",@"L",@"L",@"A",@"H",@"A",@"B",@"A",@"D", nil], @"A", [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObjects:[[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], nil]], @"L", [NSNUmber numberWithInt4], @"H", [NSNumber numberWithInt:6], @"B", [NSNumber numberWithInt:8], @"D",nil];
Я не думаю, что мой вопрос был правильно сформирован. Я хочу иметь массив позиций индекса как объект и символ как ключ. Поэтому, если A является ключом, объектом для ключа будет массив, имеющий значения «0», «3''5''7», –
что вы подразумеваете под «выходом»? вы имеете в виду NSLog на экран? или вы просто хотите знать код, необходимый для хранения того, что вы описали в структуре данных? – abbood
Просто хочу знать подход. Я попробовал это как для (id объекта в [MyArray reverseObjectEnumerator]). Но, похоже, не работает –