0

基本的には、私が書いている SDK を使用して API 呼び出しを行いたいと考えています。

私は次のクラスを持っています:

  • CarData (モデル、メーカーなどの車を作成するために必要な入力値を格納します)

基本的に車を作成するには、次のことを行います。

[Car carWithData: cardata onSuccess: successHandler onError: errorHandler] 

これは基本的に、API 呼び出し要求を作成し、新しい Car クラスに応答を入力した後に Car のインスタンスを作成し、そのインスタンスを successHandler に渡すファクトリ メソッドです。

したがって、「車」にはその車を作成するための上記の静的メソッドがありますが、車を編集、削除するための非静的メソッドもあります (これにより、サーバーへの API 呼び出しの編集、削除が行われます)。

そのため、 Car create static メソッドが新しい car を successHandler に渡すときは、次のようにします。

successHandler([[Car alloc] initWithDictionary: dictionary)

成功ハンドラーは先に進み、その新しい車を使用して次のことを行うことができます。

[car update: cardata]
[car delete]

新しい車のオブジェクトには、更新および削除の API 呼び出しに渡すことができる各車の ID があることを考慮してください。

私の質問:

  • ユーザー入力を保存するために cardata オブジェクトが必要ですか、それとも後ですべての API 呼び出しからの応答も保存する car オブジェクトに保存できますか?
  • このモデルを改善するにはどうすればよいですか?

CarData に関しては、異なる API 呼び出しに対して異なる入力が存在する可能性があることに注意してください。そのため、create 関数はモデル、メーカーなどを知る必要があるかもしれませんが、find 関数は検索するアイテムの数、制限、開始 ID などを知る必要があるかもしれません。

4

1 に答える 1

5

まず、名前は SDK を構築する上で非常に重要です。あなたの名前は少し紛らわしいです。CarDataに関連しているように聞こえNSDataます。「別のクラスに関する情報を保持するクラス」の典型的な名前は「記述子」です。だから、私はこれを と呼びますCarDescriptorUIFontインスピレーションについては、 とを参照してくださいUIFontDescriptor

次に、carWithData:onSuccess:onError:を返す必要があるように聞こえますが、 のCarようvoidです。次のことをお勧めします。

+ (void)createCarWithDescriptor:(CarDescriptor *)descriptor 
                     completion:(void (^)(Car *car, NSError *error))completion;

完了ブロックは 2 つではなく 1 つにすることをお勧めします。完了ハンドラの前に . を付けないでくださいon

クラスは検索のCarDescriptor質問にも役立つはずですが、制限などを含めないでください。CarSearchRequestそれを a (または単に a )でラップする必要がありCarSearchます。インスピレーションを得るために参照してくださいNSFetchRequest。述語を渡すかCarDescriptor完全な述語が必要かは、サービスが検索をどのように管理するかによって異なります。(もちろん、いつでも a を述語に変換するコードを使用できます。) ここでも、インスピレーションを得るためのフォントの検索に がCarDescriptorどのように使用されているかを見てください。UIFontDescriptor

于 2013-10-18T16:10:28.663 に答える