0

一連の共通画面を共有する一連のアプリがあります。一部の画面では、一部のアプリで他のアプリよりも多くの機能を使用しています。たとえば、あるアプリでは課題画面でタグがサポートされていますが、他のアプリではサポートされていません。1 つのリージョン画面ではワークフローがサポートされていますが、他のリージョンではサポートされていません。

コア データを使用しており、アプリごとにデータ モデルが異なります。エンティティがアプリのデータ モデルで使用されていない場合、対応するクラスはそのアプリに組み込まれません。

この結果、一部のコントローラーには、コントローラーが特定のアプリで使用されるときに存在する場合と存在しない場合があるクラスへの参照が含まれています。現時点では、アプリの PCH ファイルで「魔法の」 #defines を使用してこれを回避しています。そのため、Issue コントローラーの一部のコードは でラップさ#ifdef SGB_ISSUES_HAVE_TAGSれ、Regions コントローラーの一部のコードは でラップされてい#ifdef SGB_REGIONS_ARE_FILTERED_BY_WORKFLOWます。

私が望むのは、ファイルがプロジェクトに含まれているかどうかを検出することで、代わりにこれを行うことです。したがって、課題コントローラーの上部には、次のようなものがあります。

#if exists_in_project("SGBIssueTag.h")
#import "SGBIssueTag.h"
#endif

そして、#ifdef SGB_ISSUES_HAVE_TAGSSGBIssueTag.h に入れることができます。課題コントローラーを使用して作成したアプリは、IssueTag エンティティを含めるとすぐに課題タグ機能を取得するため、PCH ファイルをいじる必要はありません。

このようなことは可能ですか?

4

1 に答える 1