2013-09-04 4 views
0

В чем проблема с этим кодом? Я пытаюсь поместить данные из NSArray в NSMutableDictionary, но я не хочу сначала разбивать начальный nsarray на два, а затем отправлять данные в nsdcitionary.Не удается сохранить все данные из NSArray в NSMutableDictionary?

Проблема в том, что когда я NSLog de mutabledictionary, он возвращает мне только один элемент, который является последними данными из NSArray.

NSString *str = @"13:00,2.00,13:05,2.03,13:10,2.07,13:15,2.01,13:20,2.08,13:25,2.10,13:30,2.15"; 
NSArray *arrayFinal = [str componentsSeparatedByString:@","]; 

NSMutableDictionary *dict = [NSMutableDictionary new]; 
for (int i = 0; i < [arrayFinal count ]; i = i + 2) { 
    [dict setObject:[arrayFinal objectAtIndex:i] forKey:@"hora"]; 
    [dict setObject:[arrayFinal objectAtIndex:i+1] forKey:@"preco"]; 

} 

Результат:

2013-09-04 20:27:33.732 separa[1438:c07] { 
hora = "13:30"; 
preco = "2.15"; 
} 

Любая помощь будет оценена.

+5

Что вы делаете, не имеет никакого смысла. Вы пытаетесь повторно использовать одни и те же ключи снова и снова. Какова ваша цель? Вам действительно нужен массив словарей? – rmaddy

+0

Я хочу взять данные из массива в словарь. Словарь должен иметь ключи: «hora» и «preco». hora сохранит часы в массиве, а preco сохранит цену в массиве. –

+0

Итак, у вас есть словарь массивов или массив словарей, которые вы выбираете. –

ответ

1
for (int i = 0; i < [arrayFinal count ]; i = i + 2) { 
    [dict setObject:[arrayFinal objectAtIndex:i+1] forKey:[arrayFinal objectAtIndex:i]]; 
} 
+0

PERFECT Hot Licks !!!! Это было ТОЧНО, что я хотел !!!!! –

+2

@MarcoAlmeida человек, вы должны выразить себя лучше. Это не то, что вы сказали rmaddy. Вы сказали, что хотите, чтобы hora был ключом, теперь ключи являются действительными значениями hora, а не строкой @ «hora». –

+0

@JuanCatalan - Иногда, в реальном мире, вы должны смотреть за пределы «спецификаций», чтобы понять, что имеет смысл. –

1

Вам нужно, чтобы каждая клавиша указывала на массив значений. Что-то вроде этого:

NSString *str = @"13:00,2.00,13:05,2.03,13:10,2.07,13:15,2.01,13:20,2.08,13:25,2.10,13:30,2.15"; 
NSArray *arrayFinal = [str componentsSeparatedByString:@","]; 

NSMutableArray *horas = [NSMutableArray new]; 
NSMutableArray *precos = [NSMutableArray new]; 
for (int i = 0; i < [arrayFinal count]; i += 2) { 
    [horas addObject:arrayFinal[i]]; 
    [precos addObject:arrayFinal[i + 1]]; 
} 

NSMutableDictionary *dict = [NSMutableDictionary new]; 
dict[@"hora"] = horas; 
dict[@"preco"] = precos; 
+0

Почему это проголосовало? – rmaddy

0

Вы будете нуждаться, чтобы разделить два (часы и цены) в свои NSMutableArrays, а затем хранить каждый массив как один из ключей, что-то вроде этого:

NSMutableArray *hora = [NSMutableArray alloc] init]; 
NSMutableArray *preco = [NSMutableArray alloc] init]; 

NSString *str = @"13:00,2.00,13:05,2.03,13:10,2.07,13:15,2.01,13:20,2.08,13:25,2.10,13:30,2.15"; 
NSArray *arrayFinal = [str componentsSeparatedByString:@","]; 

NSMutableDictionary *dict = [NSMutableDictionary alloc] init]; 
for (int i = 0; i < [arrayFinal count ]; i = i + 2) 
{ 
    [hora addObject:[arrayFinal objectAtIndex:i]; 
    [preco addObject:[arrayFinal objectAtIndex:i+1]; 
} 

[dict setObject:hora forKey:@"hora"]; 
[dict setObject:preco forKey:@"preco"]; 

Возможно, не совсем так, как я бы это сделал, но я думаю, что это концепция, которую вы ищете.

+0

Вы понимаете, что дублируете мой ответ? – rmaddy

+0

И как вы будете делать регулярное выражение? –

+0

Извините, rmaddy. Вы отправили сообщение, пока я печатал мой. У меня нет вещей о точках, так что Марко должен просто принять твое. – RegularExpression

Смежные вопросы