iBeacon错误:设置主要和次要ID

时间:2014-01-08 16:27:46

标签: ios objective-c ibeacon

这似乎是一个相对简单的问题,但我收到了错误。我正在开发一个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:@""]];

我在这里做错了吗?

2 个答案:

答案 0 :(得分:1)

哪一行出错,错误的确切文字是什么?我猜它是if语句,因为这是你的代码中唯一包含beacon minor和major值的行。

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

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

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

答案 1 :(得分:1)

根据您的错误消息: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)) { ... }