有人可以帮助我理解为什么下面的代码行返回:
警告:格式不是字符串文字而没有格式参数
qFileTxtName = @"110327";
aString = [@"xxxx_" stringByAppendingString:qFileTxtName];
我想要输出的是:
xxxx_110327
答案 0 :(得分:3)
尝试:
NSString *aString = @"xxxx_";
aString = [aString stringByAppendingString:qFileTextName];
答案 1 :(得分:2)
假设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];
以下日志记录调用显示另一个操作,该操作将导致编译器发出警告,以及更好(更安全)的编码方式:
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