web-dev-qa-db-ja.com

Xcodeプロジェクトグループ構造のベストプラクティスですか?

コードサンプルを提供するチュートリアルと例では、XcodeのProjectナビゲーターのプロジェクトファイルがMVCパターン(「Views」、「Controllers」、「Model」)に従ってグループごとに配置されていることがあります。機能別(「ログイン」、「チェックリスト」など)。

IOSに関して、これに関するAppleの慣習/推奨事項はありますか?どちらがベストプラクティスでしょうか?

15
AppsDev

開発者は、グループ、コード、およびファイルをさまざまな方法で整理します。しかし、私は次のようなものを使用します:

  • CoreData:DataModelおよびEntityクラスが含まれています。

  • Extension:1つのクラスを含む(デフォルトApple class extensions + project class extensions。)

  • Helper:サードパーティクラス/フレームワーク(例:SWRevealController)+ブリッジングクラス(例:SwiftのObj Cクラス=ベースのプロジェクト)

  • Model:データを保存するためのシングルトンクラス(AppModel-NSArray、NSDictionary、Stringなど)を作成します。ここでは、Webサービスレスポンスの解析と保存も行われます。

  • Services:Webサービスプロセスを含みます(例:ログイン検証、HTTP要求/応答)

  • View:ストーリーボード、LaunchScreen.XIB、およびViewクラスを含みます。サブフォルダーCellsを作成-UITableViewCell、UICollectionViewCellなどを含む.

  • Controller:UIElementsに関連するロジックまたはコードを含みます(UIButtonの参照+クリックされたアクションなど)

この構造は、 別のスタックオーバーフローポスト からのものです。

これらはまたあなたを助けるかもしれません:

  1. http://akosma.com/2009/07/28/code-organization-in-xcode-projects/

  2. https://github.com/futurice/ios-good-practices/issues/28

  3. http://www.slideshare.net/MassimoOliviero/architecting-ios-project

17
Jamshed Alam

私は実際にプロジェクトを作成して、中小規模のコードベースに適したXcodeプロジェクト構造を検討しています。見つけることができます こちら

その概要は次のとおりです。

  • ソース-すべてのソースコード
    • アカウント-アカウント関連のクラス(セッション関連のクラス、アカウントロジックなど)
    • アプリケーション-アプリケーション関連のクラス。アプリデリゲート、構成クラスなど
    • コアの追加-Appleのクラスに由来する拡張機能とサブクラス
      • ユーティリティ-一般的なユーティリティクラス。便利な拡張機能、フォーマットユーティリティ、便利なクラスなど
      • 要素ベースのフォルダー-UIView、UITableViewCellなどのフォルダー
    • ローカル永続性-ローカル永続性レイヤー。ローカルデータベース(レルム、コアデータ)とのすべての対話
      • リポジトリ-モデルに関連するすべてのローカル永続ロジック
    • 定数-すべての定数。 URL、フォント、色、エラーなど
    • モデル-すべてのモデル(サーバー側エンティティの表現)。また、ここにオブジェクトマッピングロジックをスローします
    • モジュール-ここでは、アプリケーションの各部分を機能別に分類できます
      • モジュールベースのフォルダー-各フォルダーには、すべてのモジュール固有のビューコントローラー、ビュー、デリゲート、および関連クラスが含まれます
    • ネットワーク-アプリのネットワーク層(たとえば、Webサービスとのやり取りを担当するクラス)
      • サービス-すべてのモデル関連のWebロジック
  • ストーリーボード-すべてのストーリーボードファイルが含まれています
  • リソース-メディア、ドキュメント、ローカライズファイルなどの追加リソース
6
Julian B.