MVC パラダイムをよりよく理解するために、アップロード メソッドから一部の UI コードの依存関係を削除しようとしています。
対応する NSOperation サブクラスを表示するように個々のセルを指定して、UITableView 内でアップロードの進行状況を視覚化する方法を設計したいと考えています。私の NSOperation サブクラスは、デリゲート コールバック パターン (つまり、非並行/mainThread のみ) をサポートするためにハッキングされています。NSOperation は次のようになります。
@class MyUploadOp;
@protocol MyUploadDelegate;
-(void)uploadOp:(MyUploadOp *)uploadOp madeProgress:(CGFloat)progress;
-(void)uploadOp:(MyUploadOp *)uploadOp didUploadLocalFile:(LocalFileObject *)localFile;
@end
@interface MyUploadOp : NSOperation <DBRestClientDelegate>
@property (nonatomic,strong) LocalFileObject *myLocalFile;
-(id)initWithLocalFile:(LocalFileObject *)localFile;
@end
ご覧のとおり、Dropbox SDK for iOS を使用しています。この NSOperation サブクラスは、ローカル ファイルを Dropbox にアップロードします。必要な Dropbox デリゲート メソッドを NSOperation クラス内で受け取り、アップロードの設定と追跡を担当するクラスに転送します。
私がやりたいことは、新しい UITableViewController といくつかのカスタム UITableViewCells をセットアップすることです。この部分については、助けは必要ありません、ヤッダヤッダ。私が助けを必要としているのは:
- 設定される可能性のある NSOperations を追跡する
- 各 NSOperation を UITableViewCell に割り当てる
- これらのメッセージを受信するには、誰が私の NSOperation の代理人になる必要がありますか?
- 代わりに、"progress" などのオペレーションのプロパティを設定し、KeyValue Observing を使用する必要がありますか?
- この場合、どのオブジェクトを観察する必要がありますか? セルまたはviewController?
- NSOperation が終了してキューから消えるとどうなるか、テーブルに値が入力されたままになるように記録を保持する必要があります。
- デリゲート メソッドの呼び出しごとにセル内の UIProgressBars を更新する
- NSOperation の完了時にアイテムをテーブルに保持する
私の現在のコードは現在動作していますが、まだテーブルを実装していません。これらのアイテムを追跡する最善の方法がわかりません。おそらく、Operation への参照を保持する NSObject サブクラスを作成し、それをテーブルに入力する必要があるでしょうか?