【问题标题】:format string is not a string literal (previous solutions does not help) [duplicate]格式字符串不是字符串文字(以前的解决方案没有帮助)[重复]
【发布时间】:2016-01-06 14:56:19
【问题描述】:
NSData *pdfURL = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",_paperURL]]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];

//line with error
NSString *file = [documentDirectory stringByAppendingFormat:[NSString stringWithFormat:@"/%@.pdf", _idNo]];
//ive also tried adding nil at the end
NSString *file = [documentDirectory stringByAppendingFormat:[NSString stringWithFormat:@"/%@.pdf", _idNo, nil]];

下面列出了我尝试过但没有帮助的一些答案。任何帮助将不胜感激

Warning : Format string is not a string literal (potentially insecure)

http://iphonedevsdk.com/forum/iphone-sdk-development/107828-format-string-is-not-a-string-literal-potentially-insecure-how-to-avoid-this.html

Issue With Code: Format string is not a string literal

【问题讨论】:

  • 你真的调查过他们吗?这些链接确实解决了您的问题。
  • 我做了,但我不知道我在寻找什么,我现在知道stringByAppendingFormatstringByAppendingString 存在。我阅读了比较每一行的第二个链接,直到@leejay 提到它才注意到差异

标签: xcode nsstring


【解决方案1】:

您似乎没有附加format,而是附加了string,这可能是编译器抱怨的原因。尝试像这样使用stringByAppendingString

NSString *file = [documentDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.pdf", _idNo]];

它应该可以工作。或者,如果您真的想使用stringByAppendingFormat,请这样做:

NSString *file = [documentDirectory stringByAppendingFormat:@"/%@.pdf", _idNo];

【讨论】:

  • 我选择了format 选项,如果我理解正确的话,stringByAppendingFormat 相当于嵌套stringByAppendingStringstringWithFormat?如果是这样,那很高兴知道。感谢您的帮助
  • 我想你已经明白了。 stringByAppendingString 将输入 string 与现有的 string 连接,但所述输入 string 必须是 string literalstringByAppendingFormat 首先从定义的format(带有参数的string,例如%@)构建string,然后将新构建的string literal 与现有的string 连接起来。
猜你喜欢
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多