переменная не является CFStringRef - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть это:

partenaire_lat = 48.8160525; 
partenaire_lng = 2.3257800;

И получить строку NSSt следующим образом:

NSString *endPoint =[NSString stringWithFormat:@"%@,%@", partenaire_lat, partenaire_lng];

и после использования этой строки NSString в некотором контексте я получаю эту глупую ошибку:

Variable is not a CFString.

Но если я создаю строку NSS следующим образом:

endPoint = @"48.8160525,2.3257800", тогда она отлично работает!

Для этой ошибки Variable is not a CFString Я попробовал следующее:

NSString *endPoint1 =[NSString stringWithFormat:@"%@,%@", partenaire_lat, partenaire_lng];
CFStringRef endPoint =(CFStringRef)endPoint1;

и пытался использовать endPoint, но не работал ни в коем случае. Ни у кого нет чудесной идеи? Thx

EDIT:partenaire_lat and partenaire_lng are both NSString!!

Ответы [ 4 ]

3 голосов
/ 28 сентября 2011

У вас есть

partenaire_lat = 48.8160525; 
partenaire_lng = 2.3257800;

Вы продолжаете говорить, что две переменные NSString с, но вы не присваиваете им NSString с. Вам необходимо присвоить NSString объектам NSString переменным - они не создаются для вас автоматически.

Так что ответы, которые говорят вам использовать отформатированные строки, верны. Вы действительно должны делать это так:

partenaire_lat = [[NSString stringWithFormat:@"%f", 48.8160525] retain]; 
partenaire_lng = [[NSString stringWithFormat:@"%f", 2.3257800] retain];
2 голосов
/ 28 сентября 2011

что такое лат и лнг? Я предполагаю, что число с плавающей запятой или двойное ... поэтому вы должны использовать [NSString stringWithFormat:@"%f,%f", lat, lng]; (или как вы хотите, чтобы форматирование с плавающей запятой)

2 голосов
/ 28 сентября 2011

Ваш код имеет несколько потенциальных проблем:

  1. % @ Форматирующий спецификатор ожидает параметр объекта, в то время как похоже, что вы передаете обычный float (я могу ошибаться, так как недостаточно контекста, чтобы быть уверенным). Измените формат на% f, чтобы решить вашу проблему, если это действительно так:

    NSString *endPoint1 =[NSString stringWithFormat:@"%f,%f", partenaire_lat, partenaire_lng];
    
  2. Ваша строка endPoint1 автоматически выпущена и может стать недействительной вне текущей области, если вы ее не сохраните. Поэтому, если вы попытаетесь использовать вашу переменную в другом методе, вам, вероятно, следует сохранить ее.

0 голосов
/ 28 сентября 2011

Все, что вам нужно сделать

NSString *latStr=[[NSNumber numberWithFloat:partenaire_lat] stringValue];
NSString *lngStr=[[NSNumber numberWithFloat:partenaire_lng] stringValue];

и делать все, что вы хотите сделать с этими двумя строками:)

...