В NSMutableDictionary передать не строковое значение

Рейтинг: 1Ответов: 1Опубликовано: 08.04.2015

в роли примера взял код вот этого приложения установил в свой проект и почти всё работает но у меня в проекте есть вот такой массив

    self.data = @[
              [NSString stringWithFormat:@"Distance is %f km",betweenDistance/1000],
              [NSString stringWithFormat:@"Distance is %f km",betweenDistance3/1000],
              [NSString stringWithFormat:@"Distance is %f km", betweenDistance4/1000]
              ];

Если в крации то этот массив выводит расстояние от пользователя до маркера на карте. А в скаченном мной проекте в uitable данные выводятся с помощью словаря

    states = [[NSMutableDictionary alloc]init];
[states setObject:@"Lansing" forKey:@"Michigan"];
[states setObject:@"Sacremento" forKey:@"California"];
[states setObject:@"Albany" forKey:@"New York"];
[states setObject:@"Phoenix" forKey:@"Arizona"];
[states setObject:@"Tulsa" forKey:@"Oklahoma"];
datasource = [states allKeys];

Как мне в setObject вписать значения массива? Т.е. массива не будет в принципе, останется только словарь, но в него не получается вставить значения массива, если сделать так

    [states setObject:NSString stringWithFormat:@"Distance is %f km",betweenDistance/1000 forKey:@"Michigan"];

то конечно вылетает ошибка, а как иначе?

Ответы

▲ 2Принят

Можно попробовать исправить форматирование, и тогда все заработает:

[states setObject:[NSString stringWithFormat:@"Distance is %f km", (betweenDistance / 1000)] forKey:@"Michigan"];

Но вообще хранить в "словаре" форматированные строки несколько неразумно, как по мне. Для этой задачи идеально подойдет NSNumber, а форматировать строку нужно именно там, где она используется.