[解決済み] objective-c の typedef を同等の文字列に変換する。
2022-05-05 02:31:21
質問
私の.hファイルでこのように宣言されたtypedefがあると仮定します。
typedef enum {
JSON,
XML,
Atom,
RSS
} FormatType;
typedefの数値を文字列に変換する関数を作りたい。 例えば,メッセージ
[self toString:JSON]
が送信された場合、'JSON'が返されます。
この関数は次のようなものです。
-(NSString *) toString:(FormatType)formatType {
//need help here
return [];
}
ちなみに、この構文でやってみると
[self toString:FormatType.JSON];
を使用して、typedef 値をメソッドに渡すと、エラーが表示されます。 何が足りないのでしょうか?
解決方法は?
これは本当にC言語の質問で、Objective-C(C言語のスーパーセット)に特化したものではありません。C言語の列挙型は整数で表現されます。だから、enumの値が与えられたら文字列を返す関数を書く必要がある。これにはいろいろなやり方がある。文字列の配列で、enum 値を配列のインデックスとして使用する方法や、マップ構造体(例えば
NSDictionary
しかし、これらのアプローチは、変換を明示的に行う関数ほど明確ではありません(配列のアプローチも、古典的な
C
の方法は、enum 値が 0 から連続していない場合は危険です)。このようなものがあればうまくいくと思います。
- (NSString*)formatTypeToString:(FormatType)formatType {
NSString *result = nil;
switch(formatType) {
case JSON:
result = @"JSON";
break;
case XML:
result = @"XML";
break;
case Atom:
result = @"Atom";
break;
case RSS:
result = @"RSS";
break;
default:
[NSException raise:NSGenericException format:@"Unexpected FormatType."];
}
return result;
}
enum 値の正しい構文についてのご質問ですが、値だけを使用する(例.
JSON
でなく
FormatType.JSON
sytaxを使用します。
FormatType
は型であり、enum値(例えば
JSON
,
XML
など)は、その型に割り当てることができる値です。
関連
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] 型付けされた関数ポインタ?
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] C++11の'typedef'と'using'の違いは何ですか?
-
[解決済み] C++の'struct'と'typedef struct'の違い?
-
[解決済み】C#で文字列をenumに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
構造体の配列--[エラー] '['トークンの前に一次式があることが予想される
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
initializer element is not constant "というエラーが表示されるのですが?
-
[解決済み] PTHREAD_MUTEX_INITIALIZER vs pthread_mutex_init ( &mutex, param )
-
[解決済み] C言語の書式指定子 %ul と %lu の違いは何ですか?
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] C - Setデータ構造を実装するには?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] C言語でオブジェクト指向のコードを書くとしたら、どのようにすればよいのでしょうか?[クローズド]
-
[解決済み] 2次元配列の反復処理において、ループの順序がパフォーマンスに影響するのはなぜですか?