hta*_*oya 2 iphone objective-c nsnumber operator-keyword ios
我有一个项目,可以进行多项网络操作.为了便于控制,我给每个操作一个唯一的Id,定义为NSNumber,因为我必须使用对象和Array执行操作,这样更容易:
#define LOGIN_OPERATION [NSNumber numberWithInt:0]
#define REGISTER_USER_OPERATION [NSNumber numberWithInt:1]
#define VERIFY_USER_OPERATION [NSNumber numberWithInt:2]
#define REGISTER_USER_DATA_OPERATION [NSNumber numberWithInt:3]
#define FORGOT_PASSWORD_OPERATION [NSNumber numberWithInt:4]
#define PASSTIME_REGISTER_OPERATION [NSNumber numberWithInt:5]
#define PASSTIME_VERIFY_TOKEN_OPERATION [NSNumber numberWithInt:6]
#define PASSTIME_OPERATION [NSNumber numberWithInt:7]
#define SERVICES_OPERATION [NSNumber numberWithInt:8]
#define MAIL_SUPPORT_OPERATION [NSNumber numberWithInt:9]
#define UPDATE_USER_INFO_OPERATION [NSNumber numberWithInt:10]
#define OBTAIN_CACS_OPERATION [NSNumber numberWithInt:11]
#define GET_PREPAID_BALANCE_OPERATION [NSNumber numberWithInt:12]
#define UPDATE_SERVICES_OPERATION [NSNumber numberWithInt:13]
Run Code Online (Sandbox Code Playgroud)
然后我简单地在我的项目说明中使用了以下内容,这在去年一直很好用.
- (void) processNetworkResponseForOperation: (NSNumber*) opId {
if (opId == SERVICES_OPERATION) {
//do something
} else if (opId == UPDATE_SERVICES_OPERATION) {
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
然而今天我添加了最后一个操作(数字13)和所有==操作结果为假,只是用那个数字!,我已经使用调试器来确保值是正确的,但我只能得到条件为真如果我使用:[opId isEqualToNumber:UPDATE_SERVICES_OPERATION]这很长.
我知道NSNumber是一个对象,因此==可能不是最好的选择,但为什么它适用于项目中的所有其他操作但#13不起作用?
任何帮助将不胜感激.
编辑 好我尝试更大的数字,我有同样的问题,但例如,如果我切换UPDATE_SERVICES_OPERATION数与另一个操作号,它现在执行UPDATE_SERVICES_OPERATION但它不会做我切换号码的操作.那么为什么它不适用于较新的数字:S,还是只是xcode上的构建问题?(我将重新启动并更新)
Dav*_*e.B 11
你永远不应该NSNumber直接比较你在这里做的事情,因为它是一个对象,而不是一个简单的类型.您当前的代码取决于对象内存地址的相等性而不是它们的值.在此处阅读以获取更多信息比较Obj-C中的对象.
你永远不应该使用==来比较对象的相等性,而是使用isEqual:函数NSObject,通常只有当你想确定你要比较的对象是同一个实例时.下面的代码应该可以解决您的问题.
- (void) processNetworkResponseForOperation: (NSNumber*) opId {
if ([opId intValue] == [SERVICES_OPERATION intValue]) {
//do something
} else if ([opId intValue] == [UPDATE_SERVICES_OPERATION intValue]) {
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |