iOS 中的 NSNumber 等价错误
NSNumber equivalence error in iOS
我试图在范围内找到信标,然后对 UITableViewCells 进行排序。
我正在尝试这个;
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 等于 found 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)
我希望它能运行第三次。但事实并非如此。
有人知道这里发生了什么吗?
您正在比较变量实例相等性,而不是包含的值。
改为使用 isEqualToNumber:。 See documentation.
代码应如下所示:
if ([beacon1.major isEqualToNumber:major] && [beacon1.minor isEqualToNumber:minor]) {
...
}
我试图在范围内找到信标,然后对 UITableViewCells 进行排序。 我正在尝试这个;
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 等于 found 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)
我希望它能运行第三次。但事实并非如此。
有人知道这里发生了什么吗?
您正在比较变量实例相等性,而不是包含的值。
改为使用 isEqualToNumber:。 See documentation.
代码应如下所示:
if ([beacon1.major isEqualToNumber:major] && [beacon1.minor isEqualToNumber:minor]) {
...
}