简单的条件失败

时间:2013-11-21 11:26:40

标签: ios objective-c conditional

我有一个简单的条件失败:

 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,并将它们与我知道对应的两个手动设置数字进行比较。记录它们时检查数字,它们是相同的。但是条件不接受它们是相等的,所以不会触发。

我看不出有什么不对,你可以看到这很简单。

有任何想法或建议吗?

感谢。

3 个答案:

答案 0 :(得分:6)

您正在比较对象(内存中的地址),您需要比较它们的值:

if ([incommingMinor intValue] == [beaconMinor intValue])

答案 1 :(得分:3)

您正在比较指针地址,它们不等于beaconMinorincommingMinor指向不同的内存地址。

比较Antonio答案中所述的对象编号值(比较实例的intValue

答案 2 :(得分:0)

如果您要比较NSNumber使用isEqual:

如果您要比较整数,请使用==


if ([incommingMinor isEqual: beaconMinor]) {

if ([incommingMinor intValue] == [beaconMinor intValue]) {