2015-08-12 4 views
1

В чем проблема? Почему я не могу использовать «переключатель»?Objective C - Оператор Switch с NSString

NSString *input; 
gets(charInput); 
input=[NSString stringWithUTF8String:charInput]; 
switch (input) { //Statement requires expression of integer type ('NSString *__strong' invalid) 
     case "test": //Expression is not an integer constant expression 
      NSLog(@"Yes it is"); 
      break; 
     case "Hello": //Expression is not an integer constant expression 
      NSLog(@"Hey There!"); 
     default: 
      break; 

Спасибо!

+0

Вы ищете ответ о том, что вы можете и не можете сделать (потому что это не юридическая цель-C) или о том, почему язык был написан таким образом (что может быть немного не по теме для SO)? – Simon

+0

input = [[NSString stringWithUTF8String: charInput] integervalue]; это решает вашу проблему. –

+0

Это то же самое «ограничение», что и на C, и вы должны хорошо знать C, прежде чем пытаться использовать Objective-C. –

ответ

1

В Objective C,

заявление коммутатор может иметь только INT параметр, чтобы пройти.

Вот почему вы получаете эту ошибку.

Надеюсь, это поможет!

0

Это потому, что errr, инструкция «switch» требует выражения целочисленного типа. Он позволяет использовать только числа.

На самом деле это ограничение существует только в Objective-C. Если вы используете СВИФТ, вы можете использовать строки, как показано на этой странице:

Swift highlights

(Прокрутите вниз до раздела «Switch заявления».)

+0

Вы также можете использовать строки в ящиках в Java. Кажется, это единственное ограничение на Objective-C – Tander

+0

(я имел в виду, что это ограничение только для iOS в Objective-C ..., что и развивается Yahllilevy. Да, я знаю, что альтернативы доступны на Java, C# и т. Д. ...) –

+0

Я предполагаю, что такое же ограничение применяется к OSX, не так ли? (Разумеется, на том же языке) – Tander

Смежные вопросы