我有一个简单的条件失败:
NSNumber *beaconMajor = [NSNumber numberWithInt:33995];
NSNumber *beaconMinor = [NSNumber numberWithInt:59204];
NSNumber *incommingMajor = beacon.major;
NSNumber *incommingMinor = beacon.minor;
NSLog(@"%d", [beaconMajor integerValue]);
NSLog(@"%d", [incommingMajor integerValue]);
NSLog(@"Pre big conditional");
//if the beacon is the one for the test content AND we are very near to it, show that content
if (incommingMinor == beaconMinor) {
NSLog(@"Into big conditional");
if (beacon.proximity == CLProximityImmediate) {
[self performSegueWithIdentifier:@"mainToContent" sender:self];
}
}
我正在抓取两个来自iBeacon的NSNumber,并将它们与我知道对应的两个手动设置数字进行比较。记录它们时检查数字,它们是相同的。但是条件不接受它们是相等的,所以不会触发。
我看不出有什么不对,你可以看到这很简单。
有任何想法或建议吗?
感谢。
答案 0 :(得分:6)
您正在比较对象(内存中的地址),您需要比较它们的值:
if ([incommingMinor intValue] == [beaconMinor intValue])
答案 1 :(得分:3)
您正在比较指针地址,它们不等于beaconMinor
和incommingMinor
指向不同的内存地址。
比较Antonio答案中所述的对象编号值(比较实例的intValue
)
答案 2 :(得分:0)
如果您要比较NSNumber
使用isEqual:
如果您要比较整数,请使用==
if ([incommingMinor isEqual: beaconMinor]) {
或
if ([incommingMinor intValue] == [beaconMinor intValue]) {