いくつかのネットワーク操作を行うプロジェクトがあります。簡単に制御するために、各操作に NSNumber として定義された一意の Id を与えました。これは、オブジェクトと配列を使用して操作を実行する必要があり、この方法の方が簡単だからです。
#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]
次に、プロジェクトの指示の中で次のように単純に使用しました。これは、昨年かなりうまくいきました。
- (void) processNetworkResponseForOperation: (NSNumber*) opId {
if (opId == SERVICES_OPERATION) {
//do something
} else if (opId == UPDATE_SERVICES_OPERATION) {
//do something
}
}
しかし、今日は最後の操作 (番号 13) を追加し、すべての == 操作の結果は false です。その番号だけで! use: [opId isEqualToNumber: UPDATE_SERVICES_OPERATION]これはかなり長いです。
NSNumber はオブジェクトであるため、== が最良の選択肢ではない可能性があることは理解していますが、プロジェクト内の他のすべての操作では機能するのに、#13 では機能しないのはなぜですか?
どんな助けでも大歓迎です。
編集 さて、私はより大きな数で試してみましたが、同じ問題がありますが、たとえば、UPDATE_SERVICES_OPERATION 番号を別の op 番号に切り替えると、UPDATE_SERVICES_OPERATION が実行されますが、番号を切り替えた操作は実行されません。では、なぜ新しい番号で動作しないのでしょうか :S、または単に xcode のビルドの問題なのでしょうか? (再起動して更新します)