iOS中的NSNumber等效错误

时间:2015-01-02 11:38:27

标签: ios objective-c if-statement for-loop nsnumber

我试图在范围内找到信标并在此后对UITableViewCell进行排序。 我正在尝试这个;

NSLog(@"Trying (%@ = %@,  %@ = %@)",major, beacon1.major,minor, beacon1.minor);


        if(beacon1.major == major && beacon1.minor == minor){
            NSLog(@"%@;%@ is first",major,minor);
            [room insertObject:room atIndex:0];

        }

这意味着如果NSNumber Major和NSNumber Minor等于找到的beacon,则将运行if。 NSLog回复此:

2015-01-02 12:33:02.277 App[468:30045] Trying (47566000 = 47566,  39534000 = 39534)
2015-01-02 12:33:02.278 App[468:30045] Trying (47566000 = 47566,  39534000 = 39534)
2015-01-02 12:33:02.279 App[468:30045] Trying (47566 = 47566,  39534 = 39534)

我以后会期望它第三次运行。但事实并非如此。

有没有人知道这里有什么线索?

1 个答案:

答案 0 :(得分:0)

您正在比较变量实例相等性,而不是包含的值。

使用isEqualToNumber:相反。 See documentation

代码应如下所示:

if ([beacon1.major isEqualToNumber:major] && [beacon1.minor isEqualToNumber:minor]) {
    ...
}