这似乎是一个相对简单的问题,但我收到了错误。我正在开发一个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:@""]];
我在这里做错了吗?
答案 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)) {
...
}