【问题标题】:Non-ASCII characters are not allowed outside of literals and identifiers objective-c在文字和标识符之外不允许使用非 ASCII 字符
【发布时间】:2015-07-30 20:47:12
【问题描述】:

我收到一个错误,因为“文字和标识符之外不允许使用非 ASCII 字符”。下面是代码:

- (void)purchaseMyProduct:(SKProduct *)product {

    if ([self canMakePurchases]) {
        SKPayment *payment = [SKPayment paymentWithProduct:product];
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
    else{
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle: @"Purchases are disabled in your device" message:nil delegate: self cancelButtonTitle:@"Ok" otherButtonTitles: nil];

        [alertView show];
    }
}

我在 else 块 上收到此错误。我试过删除空格,但没有奏效。我哪里错了?

【问题讨论】:

  • 我看不出该代码有什么问题。
  • 清理你的构建。产品->干净
  • 也可以试试View > Text > Show Control Characters 看看源文件中是否有奇怪的东西。
  • @Nikita:我尝试过“干净”的方法,但没有奏效
  • 您是否尝试过接受 Xcode 提供的 Fix-it?

标签: ios objective-c identifier literals non-ascii-characters


【解决方案1】:

删除上面带有else 的行(完全删除,包括换行符),然后再次手动输入,然后清理并再次构建。

当您从富文本源(例如网站)复制和粘贴代码时,Xcode 有时会错误处理插入空格的方式,并且插入 unicode 空格而不是普通空格,编译器无法识别这些空格。完全删除该行并手动重新键入它可以解决这个问题,因为有问题的字符被删除了。

【讨论】:

  • 这里没有“处理不当”。当我复制文本时,我希望它按原样粘贴,这就是 Xcode 所做的。
  • @gnasher729 我说“处理不当”是因为我遇到过一些实例,其中空格实际上是正常的,非 Unicode 空格,而 Xcode 就是这样做的。如果您不同意我的措辞,请随时编辑。
  • @gnasher729 : 在这种情况下使用“错误处理”是合适的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2011-01-02
  • 2020-10-30
  • 2020-07-24
相关资源
最近更新 更多