2012-04-14 7 views
0

私のiOSアプリケーションのバックエンドとフロントエンドコードをビルドしています。フロントエンドコードは、iPhone用にビルドされ、後でiPad用にビルドされます。しかし、バックエンドのコードは同じになるでしょう。私のいくつかの開発者は、バックエンドとフロントエンドで作業しています。バックエンド、アプリケーションはCoreDataを使用します。バックエンドコードを静的ライブラリとして作成し、フロントエンドコードでリンクさせることを考えていました。しかし、それは複雑すぎるようです。例えば、P1がEmptyアプリケーションとしてビルドされ、フロントエンドがP2としてビルドされていると言うバックエンドプロジェクトがあります。そして、どうにかP1がP2からのクラス/ファイル/コードを使用できないことを確認します(P1はP2に依存しないことを意味します)が、P2はP1からクラス/ APIなどを使用できます。私はP1が依存関係の分離をきれいにするためにP2コードを(意図せず)使用しないように強制したい。 提案がありますか?コード分離用Xcode

答えて

2

私は静的ライブラリは良い解決策だと思います。コアデータデータベースからデータを取得するためのヘルパークラスを作成することができます。例:

+ (NSArray *)fetchAllUsers; 
+ (User *)fetchUserByName:(NSString *)name; 

フロントエンドの開発者は、これらのメソッドを呼び出すことができることを認識しています。バックエンド開発者は、このメソッドの作業を担当します。

インスタンス化が必要な場合は、singeltonクラスを検討してください。

編集:(静的コアデータクラスの例)

+ (void)insertNewUserWithName:(NSString *)name 
{ 
    NSManagedObjectContext *context = [self managedObjectContext]; 

    User *user = [NSEntityDescription insertNewObjectForEntityForName:@"Users" 
               inManagedObjectContext:context]; 

    [user setName:name]; 

    NSError *error; 
    if (![context save:&error]) 
    { 
     NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
    } 
} 
+0

おかげJuzzz。次のように静的ライブラリを作成するための便利なメカニズムがありますか?a)CoreDataを持つstatic lib myLib.aを作成し、他のユーザーが使用するAPIを公開します。 b)CoreDataのないiPhoneアプリケーションMyAppプロジェクトを作成し、単にcreateUser、deleteUserなどのmyLib.aを使用して公開されたAPIを呼び出します。つまり、myAppはCoreDataを使用してこのcreateUser APIを実現していることさえも認識しません。何かご意見は? – theiOSguy

+0

あなたのコンセプトの問題は、iOSアプリケーションがSQLiteのようなデータベースでコアデータを有効にする必要があることです。あなたのデータベースがあなたが作った他のアプリケーションと同じに適合しているときは、静的ライブラリを作成して、データをフェッチ/編集/ etcすることができます。しかし、静的ライブラリを作成するときには、かなり動的で再利用可能なメソッドを変更するのが簡単です。私はあなたのための私のポストの簡単な例を作成します。 – Justin