【问题标题】:iBeacon Errors: Setting up major and minor id'siBeacon 错误:设置主要和次要 ID
【发布时间】:2014-01-08 16:27:45
【问题描述】:

这似乎是一个相对简单的问题,但我遇到了错误。我正在开发一个 iBeacon 项目,该项目将根据用户最接近的 iBeacon 向用户显示不同的消息。我已经从发送器设置了主要和次要值,然后尝试在不同的类中调用它们,但我收到错误消息“预期标识符”

self.majorLabel.text = [NSString stringWithFormat:@"%@", beacon.major];
    self.minorLabel.text = [NSString stringWithFormat:@"%@", beacon.minor];
    self.accuracyLabel.text = [NSString stringWithFormat:@"%f", beacon.accuracy];
    if (([beacon.minor] == 1) && ([beacon.major] == 2) && (beacon.proximity == CLProximityFar)) {
        self.distanceLabel.text = @"Good Bye";
        self.distanceLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@""]];

我在这里做错了吗??

【问题讨论】:

  • 我非常希望看到实际错误消息的剪切和粘贴,但这可能是混合点 (.) 和消息语法 (stackoverflow.com/questions/7847122/…) 的情况。所以试试[beacon minor] == 1 或beacon.minor == 1。
  • 好的,这就是错误所说的 if (([[beacon.minor] : Expected identifier integerValue] == 1) && ([[beacon.major] : Expected identifier integerValue] == 2) && (beacon.proximity == CLProximityFar)) { self.distanceLabel.text = @"Good Bye"; self.distanceLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@""]];
  • IityFar))t 在 if 语句之后说。我将主要和次要值设置为 self.majorLabel.text = [NSString stringWithFormat:@"%@", beacon.major]; self.minorLabel.text = [NSString stringWithFormat:@"%@", beacon.minor];
  • 1. 请在您的问题中添加格式正确的错误(对所有人都有帮助)和2. 您是否尝试过我关于混合属性和方法语法的建议(即删除@987654327 周围的方括号@ 和 beacon.major)?
  • 谢谢!你的建议奏效了。我删除了 beacon.minor 和 beacon.major 周围的方括号,它就像一个魅力!再次感谢

标签: ios objective-c ibeacon


【解决方案1】:

哪一行出现错误,错误的确切文本是什么?我猜这是 if 语句,因为这是您的代码中唯一包含信标次要值和主要值的行。

什么是变量“信标”?它是 CLBeacon 类型的吗?我会这么认为。

CLBeacon 对象(以及 CLBeaconRegion 对象)的主要和次要值属性是 NSNumber,而不是整数。因此,您的 if 语句应为

if (([[beacon.minor] integerValue] == 1) && 
   ([[beacon.major] integerValue] == 2) && 
   (beacon.proximity == CLProximityFar)) 
{
}

【讨论】:

  • 谢谢 Duncan,是的,value 属性是 CLBeacon。我将代码更新为您建议的内容,但仍然收到相同的错误。 if (([[beacon.minor] integerValue] == 1) && ([[beacon.major] integerValue] == 2) && 它说 Expected Identifier就在那个代码上
  • 不知道。编辑您的问题并发布整个方法,以及声明您正在使用的实例变量的 .h 文件的相关部分。还要截取编译器错误的屏幕截图并发布。它应该在导致错误的行的一部分上放置一个插入符号。
  • 谢谢 已解决。我将它们称为整数而不是 NSNumber。一旦我改变了它并修复了我的语法,它就起作用了!谢谢!
  • @Hugh Mbaezue,这不是我说的吗?
【解决方案2】:

根据您的错误消息:Expected identifier 看来您正在混合属性点 (.) 和消息语法。

更改您的代码:

if (([beacon.minor] == 1) && ([beacon.major] == 2) && (beacon.proximity == CLProximityFar)) { ... }

到任一属性 (.) 语法(删除 [] 括号):

if ((beacon.minor == 1) && (beacon.major == 2) && (beacon.proximity == CLProximityFar)) { ... }

或方法语法(去掉.):

if (([beacon minor] == 1) && ([beacon major] == 2) && (beacon.proximity == CLProximityFar)) { ... }

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多