有人能帮助我理解为什么代码线以下的回报:警告:格式字符串不是一个字面,没有格式参数
警告:格式字符串不是一个字面,没有格式参数
qFileTxtName = @"110327";
aString = [@"xxxx_" stringByAppendingString:qFileTxtName];
什么,我试图得到尽可能的输出是:
xxxx_110327
有人能帮助我理解为什么代码线以下的回报:警告:格式字符串不是一个字面,没有格式参数
警告:格式字符串不是一个字面,没有格式参数
qFileTxtName = @"110327";
aString = [@"xxxx_" stringByAppendingString:qFileTxtName];
什么,我试图得到尽可能的输出是:
xxxx_110327
尝试:
NSString *aString = @"xxxx_";
aString = [aString stringByAppendingString:qFileTextName];
假设你已经没有宣布他们在其他地方,尽量
NSString *qFileTxtName = @"110327";
NSString *aString = [@"xxxx_" stringByAppendingString:qFileTxtName];
假设qFileTxtName
和aString
都被定义为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];
下来电记录显示的另一个操作,将导致从编译器警告,而t他更好(更安全)的方式来编码它:
NSLog(aString); // warning: format not a string literal and no format arguments
NSLog(@"%@", aString); // the more secure way to do it
这就是formater的问题。在较新版本的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
如果真的需要使用 “stringByAppendingFormat”, 的NSString * ASTRING = [@ “xxxx_” stringByAppendingFormat:@ “%@”,qFileTxtName]。做的工作..! 谢谢@NSGod。 – Shailesh 2013-05-13 05:30:11