、、およびクラスBHIDataFormatter
によって実装される という名前の Objective-C でプロトコルを作成しました。BHCsvDataFormatter
BHJsonFormatter
BHXmlFormatter
主に .NET 開発者として、必要なインスタンスは次の方法で取得できます。
IDataFormatter formatter;
if (csv) formatter = new CsvDataFormatter();
else if (json) formatter = new JsonFormatter();
else if (xml) formatter = new XmlDataFormatter();
else throw SomeException("Cripes");
基本的に、どうすれば Objecive-C で同じことができますか? BHIDataFormatter
「不明なタイプ」ですが、試しました:
BHIDataFormatter* formatter;
if (csv) formatter = [[BHCsvDataFormatter alloc] init];
else if (json) formatter = [[BHJsonDataFormatter alloc] init];
else if (xml) formatter = [[BHXmlDataFormatter alloc] init];
else [[NSException exceptionWithName:@"SomeException" reason:@"Cripes" userInfo:nil] raise];
一般的すぎるように見えますが、次のように動作するようです (具体的にはBHIDataFormatter
明示的に使用したいと思います)。
Protocol* formatter = [[CsvDataFormatter alloc] init];