3

私はこれに数日間取り組んできましたが、これを最適に構成する方法がわからないようです。私は決してObjectiveCの専門家ではありません。

Drupalアプリケーション用のRESTfulAPIを開発しました。現在、AppStoreにASIHTTPRequestを使用して接続するiOSアプリがあります。ただし、ご存知の方もいらっしゃると思いますが、現在はサポートされていません。そこで、AFNetworkingに移行することにし、APIで使用するライブラリとしてオープンソース化できるように構築したいと考えています。

現在のアプリケーションはCoreDataを使用しており、SQLiteデータベースに入ってくるすべてのデータを保存します。現在のワークフローは次のようになります。

Get Request Receive JSON Parse and map JSON to CoreData NSManagedObject Save Context

皆さんが私にライブラリとしてオープンソースを提案するためにどのような道を提案するかについて、いくつか質問があります。

大まかな概要を説明するだけです。

メンバー、グループ、イベント、メッセージ(最も単純なもの)があります。

私がこれについて考えてきたいくつかの方法があります:

AFNetworkingAPI呼び出しと解析/マッピングメソッドをNSManagedObjectに追加します

私はこの概念が好きですが、それが理にかなっているかどうかはわかりません。コアデータスキーマはAPIのスキーマになり、それは素晴らしいことです。しかし、私の懸念は、これを使用している他の開発者が自分のアプリでコアデータを使用したくない場合はどうなるでしょうか?その上、複数のインスタンスを返すメソッドでどのように見えるかわかりません。たとえば、NSManagedObjectグループがある場合、グループのインデックスを取得するための呼び出しをどこに置くのですか?また、誰かを特定のコアデータモデルに固定するのでしょうか。それは良いことですか。

APIから独自のデータを取得し、それを独自のプロパティに解析してから、パブリックライブラリのどこかでNSManagedオブジェクトへのマッピングを行う方法を知っている個別のオブジェクトを用意します。

この方法も良いように聞こえますが、非常によく似たプロパティを持つ非常によく似たオブジェクトがあります。

カテゴリ

ここで、カテゴリを使用してメソッド を追加し、セカンダリ.h.mファイル を使用してNSManagedObjectにプロパティを追加できるものを読みました。それが理にかなっているかどうかはわかりません。

APIクラス、コアデータクラス、およびマッパークラス。

間違いなく厄介です。

より良い提案を歓迎します!

私は他のいくつかの例を見ようとしましたが、それらを適切に分析するのに十分なObjectiveCの知識がないと思います。

主な目標は次のとおりです。

他のアプリで再利用可能なリクエストライブラリに抽象化します。オブジェクトのスキーマを適用することはプラスです。ユーザーをCoreDataモデルに固定したり、必要がない場合はCoreDataを使用したりしないでください。

助けてくれてありがとう!

4

1 に答える 1

2

スキーマを適用しようとしている場合は、独自のモデル クラスを作成する必要があります。これは、単に NSObject (または意味のあるもの) をサブクラス化するか、Core Data/NSManagedObject ルートを使用することで実行できます。その場合は、必要なファイルを含めるだけです。

個人的には、サーバー呼び出しを個別に管理します。Facebook SDK 3.0 を見てみると、いくらか助けになるかもしれません。基本的に、サーバー呼び出しを処理し、情報を解析し、ユーザーにとって意味のある方法でデリゲート/ブロックに戻す 1 つまたは複数のクラスを作成します。

ここで、カスタム オブジェクト (またはそれらの配列など) を返すことができます。これはすべて、任意のネットワーク レイヤーの上に構築できます。私は AFNetworking のファンですが、どれでも機能します。サブプロジェクト/サブモジュール/などに必要なコードを含めるだけです。使用するすべてのライブラリにクレジットを表示するようにしてください。

別のオプションは、これをすべてまとめてラップし、他の開発者が内部コードを変更できないようにするフレームワークまたは静的ライブラリを作成することです。これが始まりであることを願っています。

于 2012-08-23T21:16:14.473 に答える