Как создать оператор switch с параметром accept string
-(int)Type:(NSString *)typeName{
switch (typeName) {
case @"MEN":
NSLog(@"MEN");
break;
case @"FEMALE":
NSLog(@"FEMALE");
break;
default:
NSLog(@"FEMALE");
break;
}
}
Я тестирую его в php, который отлично работает
$name = "JHON";
switch ($name) {
case "JHON" :
{
echo "Im JHON";
break;
}
case "KIRAN":
{
echo "Im KIRAN";
break;
}
default:{
echo "Im default";
}
}
?>
Случай с переключателем, который принимает строковое условие, не работает объектно-c, его сообщение об ошибке говорит, что оператор требует выражения целочисленного типа. (NSString _string недействителен)
Ну, ошибка, которую вы получаете, отдает ей, переключиться в объектив-c работает только с целыми числами, а не с строками...
Как уже упоминалось, вы обычно не можете использовать switch
с вещами, которые не являются целыми (на самых популярных языках программирования, включая Objective-C). Тем не менее, вы можете проверить этот вопрос для того, чтобы приблизиться к синтаксису, не прибегая к if-else.
В Objective C
вы не можете использовать Strings
in Switch
, но вы можете сделать это, используя NSDictionary
, для ссылки на эту qaru.site/questions/41406/.... Поэтому из ссылки ваш код можно переписать как
typedef void (^CaseBlock)();
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
^() { NSLog(@"MEN"); }, @"MEN",
^() { NSLog(@"WOMEN"); }, @"WOMEN",
^() { NSLog(@"MALE"); }, @"MALE",
^() { NSLog(@"FEMALE"); }, @"FEMALE",
nil];
CaseBlock c = dict[@"MEN"];
if (c) c(); else {
// default: case
NSLog(@"Female");
}