【问题标题】:Escaping the @" " characters in Objective C在 Objective C 中转义 @" " 字符
【发布时间】:2012-03-29 17:04:39
【问题描述】:

我正在尝试根据传递的“艺术家 ID”设置视图的背景图像。到目前为止,这是我的代码:

 NSString *backgroundImageName = [[NSString alloc]initWithFormat:@"artistbackground%i.png",_artistID];


    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:backgroundImageName]];
    NSLog(@"%@",backgroundImageName);

不幸的是,对于 ImageNamed 中的参数,我传入的是: 艺术家背景1

代替:

@"艺术家背景1"

关于如何转义 @ 和引号的任何想法?

谢谢!!

【问题讨论】:

  • 嗯?要从imageNamed 方法创建UIImage,您只需要一个包含仅文件名 的字符串。 @"" 语法只是一种特殊的语法,它允许您轻松地直接创建 NSStrings(无需调用 [[NSString alloc] init...])。如果上面的代码不起作用,您会遇到其他问题;您无需在第二个字符串中创建 @""

标签: iphone objective-c ios nsstring


【解决方案1】:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[NSString stringWithFormat:@"@%@",backgroundImageName]];

本质上是做两个字符串,第二个会加上@""。

【讨论】:

  • 我会给你支票。但我发现这行得通: self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[NSString stringWithFormat:@"@\"%@\"",backgroundImageName]]];
  • 然而,即使字符串现在正确,图像仍然无法加载。任何想法为什么?
  • 如果文件名为 file.jpg,此代码应该可以使用 imageName:@"file.jpg" 另外,请确保您的大写字母正确,如果没有准确的文本,它将无法正常工作。
【解决方案2】:

你应该在你想要的字符之前使用\。一个例子:

NSLog(@"\@\"Try\"");

代码打印

@"Try"

【讨论】:

    【解决方案3】:

    不要忘记,即使是字符串常量也是 Objective-C 中的 NSString 对象。这是魔法的一部分!我经常看到刚接触这门语言的程序员写这行代码:

    [NSString stringWithFormat:@"@%@",backgroundImageName];
    

    但是你可以将这一行简化为:

    [@"@" stringByAppendingString:backgroundImageName];
    

    魔法!

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2011-12-15
      • 2010-10-14
      相关资源
      最近更新 更多