大家好,我想使用 iOS8 的新 APNs api 来处理通知操作。在这个方法中:
- (void)application:(UIApplication *)application
handleActionWithIdentifier:(NSString *)identifier
forRemoteNotification:(NSDictionary *)notification
completionHandler:(void (^)())completionHandler {
if ([identifier isEqualToString:@"ACCEPT_IDENTIFIER"]) {
[self handleAcceptActionWithNotification:notification];
}
else if([identifier isEqualToString:@"MAYBE_IDENTIFIER"]) {
[self handleMaybeActionWithNotification:notification];
}
else if ([identifier isEqualToString:@"REJECT_IDENTIFIER"]) {
[self handleRejectActionWithNotification:notification];
}
else if....blah blah blah..
}
在这种情况下,我以后可能不得不用NSString写太多的if-else语句,我知道一些避免太多if-else语句的方法,比如使用switch,但它不适用于string或NSString案例。
是否有任何解决方案可以避免在此字符串或 NSString 情况下编写过多的 if-else 语句? 提前致谢。
最佳答案
你可以把所有的选择器放在一个字典映射中
NSDictionary* handleMap = @{
@"ACCEPT_IDENTIFIER" : NSStringFromSelector(@selector(handleAcceptActionWithNotification:))
@"MAYBE_IDENTIFIER" : NSStringFromSelector(@selector(handleMaybeActionWithNotification:))
@"REJECT_IDENTIFIER" : NSStringFromSelector(@selector(handleRejectActionWithNotification:)])
};
NSString* selString = handleMap[identifier];
if (selString) {
SEL sel = NSSelectorFromString(selString);
[self performSelector:sel withObject:notification];
}
handleMap
应该声明为成员变量,这样它只会被初始化一次。
关于ios - 如何在 iOS 中使用 NSString 避免过多的 if-else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25656429/