3

バックエンドで Django サーバーに接続されている iPad アプリを開発しています。サーバーは、ほとんどの場合、データベース上にある単なる REST API です (これは TastyPi で行われます)。

私はiOSが初めてなので、これを開発する最良の方法を理解しようとしています。

したがって、いくつかの関連する質問:

  1. サーバー上のモデルを反映するコード内の「モデル」を作成する作業を簡素化するライブラリはありますか?

REST Api が提供するオブジェクトに 1 対 1 でマッピングされた Objective C でオブジェクトを定義できる Django の ORM のようなものを想像します。

このライブラリは、ローカル オブジェクトとサーバー上のオブジェクト間のすべてのキャッシュと変換を抽象化できます。

  1. この種のライブラリが存在しない場合、このタイプのプロジェクトのベスト プラクティスのセットはありますか? たとえば、DB を反映するローカル オブジェクトを用意する必要がありますか? API を扱うすべてのコードを処理する 1 つのクラスを作成する必要がありますか?それとも、API の一部であるさまざまなオブジェクトにリクエストを記述する必要がありますか?

要するに、データベースを公開する REST Api に支えられた iOS アプリをコーディングする「正しい」方法をどこで学ぶことができますか? 既存のプロジェクトのコードを見るよりも、できればチュートリアルです。

4

4 に答える 4

4

1) ORM の場合、iOS には、SELECT、LEFT JOIN などの SQL ステートメントではなく、エンティティを構築してオブジェクトを操作できる Core Data があります。

他の人についてはわかりませんが、これは私が通常行う方法です:

1) アプリは、ASIHttpRequest ライブラリなどのライブラリを使用して Web サービスに HTTP POST 要求を行います。(注、バックエンドについては、Symfony Web フレームワークを使用して Web サービスを作成しました)

2) アプリは JSON 応答を返します。

例えば

{ データ { 名前: ボブ 年齢: 20 } }

3) JSONKit または ASIHttpRequest によって提供されるものなどの JSON パーサーを使用して JSON を解析し、JSON サーバーの応答を NSDictionary に変換します。

NSDictionary *data = [[リクエスト応答文字列] objectFromJSONString];

4) アプリにデータを保存するかどうかは、アプリの性質によって異なります。アプリが地元のレストランを検索する場合、アプリの性質はレストランを検索することなので、返された結果のローカル コピーを保持したくないでしょう。

ただし、ユーザーの自宅作業をアカウントからダウンロードするログイン システムのような場合は、これらのデータをデバイスにローカルに保存する可能性があります。

ここでコア データの出番です。サーバー モデルを複製するモデルを構築し、サーバー モデルとクライアント モデルの間で単純な 1 対 1 のマッピングを行います。

それが役立つことを願っています。

于 2012-10-24T15:02:22.080 に答える
2

Parse.com APIはRESTfulであり、データベースのボイラープレートコード構築に何千時間もかかります私は彼らのために働いていませんが、私はサービスが好きです。

于 2012-10-24T12:25:00.547 に答える
2

レストキットをチェック

RestKit は iOS 用の Objective-C フレームワークであり、RESTful Web サービスとのやり取りをシンプル、高速、かつ楽しくすることを目的としています。クリーンでシンプルな HTTP 要求/応答 API と、作業を完了するために記述する必要のあるコードの量を削減する強力なオブジェクト マッピング システムを組み合わせます。

また、リモートでロードされたオブジェクトをローカル ストアに直接永続化することもサポートしています。

于 2012-10-24T12:18:04.227 に答える
1

#1 については、helios.ioがそのトリックを実行します。githubのドキュメントから、

データ モデルと REST Web サービスの同期を維持するために、ヘリオス アプリケーションにリンクできます。

$ helios リンク パス/to/DataModel.xcdatamodel

これにより、Xcode プロジェクトと Helios プロジェクトのデータ モデル ファイル間にハード リンクが作成されます。いずれかのファイルに加えられた変更は、両方に影響します。次回サーバーを起動すると、Helios は自動的にデータベースを移行してテーブルを作成し、列を挿入して、新しいエンティティまたは属性に対応します。

于 2014-10-27T22:27:21.490 に答える