-1

我有这个:

partenaire_lat = 48.8160525; 
partenaire_lng = 2.3257800;

并获得这样的 NSString:

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

在某些情况下使用这个 NSString 之后,我得到了这个愚蠢的错误:

Variable is not a CFString.

但是如果我这样创建 NSString :

endPoint = @"48.8160525,2.3257800"然后它就完美了!

对于这个错误Variable is not a CFString,我尝试了以下方法:

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

并尝试使用endPoint但不以这种方式工作。有人有什么神奇的想法吗?谢谢

EDIT:partenaire_lat and partenaire_lng are both NSString!!
4

4 回答 4

3

你有

partenaire_lat = 48.8160525; 
partenaire_lng = 2.3257800;

您一直说这两个变量是NSStrings 但您没有将NSStrings 分配给它们。您需要将NSString对象分配给NSString变量 - 它们不会自动为您创建。

因此,告诉您使用格式化字符串的答案是正确的。你真的应该这样做:

partenaire_lat = [[NSString stringWithFormat:@"%f", 48.8160525] retain]; 
partenaire_lng = [[NSString stringWithFormat:@"%f", 2.3257800] retain];
于 2011-09-28T15:26:22.033 回答
2

您的代码有几个潜在的问题:

  1. %@ 格式说明符需要对象参数,而看起来您传递的是普通浮点数(我可能在这里错了,因为没有足够的上下文可以确定)。如果确实如此,请将格式更改为 %f 以解决您的问题:

    NSString *endPoint1 =[NSString stringWithFormat:@"%f,%f", partenaire_lat, partenaire_lng];
    
  2. 您的 endPoint1 字符串是自动释放的,如果您不保留它,可能会在当前范围之外变得无效。因此,如果您尝试在另一种方法中使用您的变量,您可能应该保留它。

于 2011-09-28T14:34:14.653 回答
2

什么是lat和lng?我假设浮点数或双精度..所以你应该使用[NSString stringWithFormat:@"%f,%f", lat, lng];(或者你希望浮点数被格式化)

于 2011-09-28T14:35:02.237 回答
-1

所有你需要做的

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

并用这两个字符串做任何你想做的事情:)

于 2011-09-28T15:26:16.607 回答