StringWithFormat返回非NSString

时间:2012-10-03 06:20:05

标签: iphone objective-c nsstring stringwithformat

我遇到StringWithFormat无效的问题。调试器说返回的字符串不是NSString(并且它不是null),因此我假设NSString的调用与方法选择器不匹配,我的应用程序崩溃。

我正在测试XCode 4.5 iOS 6设置(旧项目,没有子项目)。

此代码将返回不是NSString的内容:

[NSString stringWithFormat:@"\nTest to %@ (%@)\n", target, ipString]

如果我在格式字符串中插入一个空格作为第一个字符,那么结果是NSString,即以下工作:

[NSString stringWithFormat:@"\nTest to %@ (%@)\n", target, ipString]

此代码块也不起作用。它返回的内容不是NSString。我在这里做错了什么?

int TTL = 1;
NSString *ttl = [NSString stringWithFormat:@" \n# %d", TTL] ;
TTL++;
[self textToParent:  ttl];     // Program crashes here. Debugger show ttl not NSString.
TTL--;

错误讯息为ttl = (__NSCFString *) 0xwhatever @<variable is not NSString>

3 个答案:

答案 0 :(得分:1)

尝试将前两行更改为..

  int TTL = 1;
        NSString *ttl = [NSString stringWithFormat:@" \n# %@",[NSNumber numberWithInt:TTL] ] ;

   TTL++;
   [self textToParent: (NSString *) ttl];     //  Change here.
   TTL--;

答案 1 :(得分:0)

尝试下面的代码...

int TTL = 1;
NSString *ttl = [NSString stringWithFormat:@" \n# %@",[NSNumber numberWithInt:TTL]] ;
[ttl retain];
TTL++;
[self textToParent:  ttl];
TTL--;

希望这能帮到你......

:)

答案 2 :(得分:0)

考虑一下你的调试器可能不是很完美。单击调试器中的变量,右键单击&#34;打印说明&#34;。