4

環境によって異なる可能性のあるプロジェクトがあるため、プロジェクトはまったく同じで、一部の URL が変更されているだけです。通常、ダミー Web サービスにアクセスする作業環境があり、クライアントの Web サービスの使用を開始する必要がある場合は、それらの URL をすばやく切り替えたいだけです。それを実現するために、私の最初のアイデアは、Web サービスのエンドポイントごとに異なる plist ファイルを用意することでした (クライアントは複数の URL を持つことができます: 運用前、テスト、運用)。そう:

  1. これは私が持っている最良の選択肢ですか?Web サービス エンドポイントごとに異なる plist がありますか? (ここでもプロジェクトはまったく同じで、エンドポイントのみが異なります)

  2. 異なる環境ごとに新しいターゲットを作成することは理にかなっていますか? それとも、同じターゲットのスキームでこれを行うことができますか?

4

2 に答える 2

2

変更する必要があるパラメーターの数に応じて、マクロを使用できます。

#define _DEBUG_MODE
  NSString endpoiunt = @"foo";
#elseif
  NSString endpoiunt = @"foo";
#endif

次に、マクロを宣言するデバッグ スキーム用のコンパイラ フラグを簡単にアタッチできます。ターゲットが異なることを心配する必要はありません。

.plistファイルを保持したい場合は、同じアプローチを簡単に使用できますが、エンドポイントをハードロックする代わりにファイル名を変更できます。ただし、2 つのターゲットを使用しない限り、両方の plist がパッケージにコピーされます (コピー フェーズに条件付きでファイルを含めることも可能だと思いますが、その方法はわかりません)。

于 2012-05-12T20:37:06.433 に答える
0

単純なケースでは、次のアプローチを取ることができます。

MONAppsWebServiceURL.h

NSURL * MONAppsWebServiceURL(void);

MONAppsWebServiceURL.m

#import "MONAppsWebServiceURL.h"

#define MON_APP_USE_DUMMY_SERVICE 1

NSURL * MONAppsWebServiceURL(void) {
#if MON_APP_USE_DUMMY_SERVICE
// perhaps you want warnings as errors for distro
#warning using dummy web service
  return the dummy url;
#else
  return the real url;
#endif
}

これには、変更を加えるときに、1 つのファイルを変更して再コンパイルする必要があります。このアプローチは、ロードする plist を特定するためにも使用できます (出荷前に削除する限り)。

もちろん、より複雑な問題には、より複雑な解決策がありますが、おそらく必要なのはこれだけです。私が見ているように、この場合、スキームや追加のターゲットは必要ありません。

于 2012-05-12T21:14:37.560 に答える