警告:格式不是字符串文字,也不是格式参数

时间:2011-06-13 22:32:01

标签: iphone objective-c string

有人可以帮助我理解为什么下面的代码行返回:

  

警告:格式不是字符串文字而没有格式参数

qFileTxtName = @"110327";
aString = [@"xxxx_" stringByAppendingString:qFileTxtName];

我想要输出的是:

  

xxxx_110327

4 个答案:

答案 0 :(得分:3)

尝试:

NSString *aString = @"xxxx_";
aString = [aString stringByAppendingString:qFileTextName];

答案 1 :(得分:2)

假设qFileTxtNameaString都定义为NSString*,那么您提供的代码不会产生任何警告。

NSString *qFileTxtName = @"110327";
NSString *aString = [@"xxxx_" stringByAppendingString:qFileTxtName];
// no warnings

我认为您打算写-stringByAppendingFormat:发出警告:

NSString *qFileTxtName = @"110327";
NSString *aString = [@"xxxx_" stringByAppendingFormat:qFileTxtName]; 
// warning: format not a string literal and no format arguments

如果您真的想使用-stringByAppendingFormat:,则需要执行以下操作:

NSString *aString = [@"xxxx_" stringByAppendingFormat:@"%@", qFileTxtName]; 

以下日志记录调用显示另一个操作,该操作将导致编译器发出警告,以及更好(更安全)的编码方式:

NSLog(aString); // warning: format not a string literal and no format arguments

NSLog(@"%@", aString); // the more secure way to do it

答案 2 :(得分:0)

假设您尚未在其他地方宣布,请尝试

NSString *qFileTxtName = @"110327";
NSString *aString = [@"xxxx_" stringByAppendingString:qFileTxtName];

答案 3 :(得分:0)

这是形成者的问题。在较新版本的ios sdk中,有一种新方法可以用于此。所以使用stringWithString而不是stringWithFormat。如下所示。

 NSMutableArray * array_mutable = [NSMutableArray arrayWithObject:@"tekst"];
        NSString *s1;
        s1 = [NSString stringWithFormat:[myArray objectAtIndex:0]]; //(Format string is not a string literal (potentially insecure)
        s1 = [NSString stringWithString:[myArray objectAtIndex:0]]; //no problem