我正在尝试从我的上传方法中删除一些 UI 代码依赖项,以更好地理解 MVC 范例。
我想设计一种在 UITableView 中可视化上传进度的方法,并指定单个单元格来显示相应的 NSOperation 子类。我的 NSOperation 子类已被破解以支持委托回调模式(即仅非并发/主线程)。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
如您所见,我正在使用适用于 iOS 的 Dropbox SDK。这个 NSOperation 子类将本地文件上传到 Dropbox。我在 NSOperation 类中接收到必要的 Dropbox 委托方法,然后将它们转发给负责设置和跟踪上传的类。
我想做的是设置一个新的 UITableViewController 和一些自定义 UITableViewCells。这部分我不需要帮助,yadda yadda。我需要帮助的是:
- 跟踪可能设置的 NSOperations
- 将每个 NSOperation 分配给 UITableViewCell
- 谁应该是我的 NSOperation 的代表来接收这些消息?
- 我是否应该在我的操作上设置属性,例如“进度”并使用 KeyValue Observing?
- 如果是这种情况,应该观察什么对象?单元格还是视图控制器?
- 当 NSOperation 完成并从队列中消失时会发生什么,我需要保留记录以确保表格保持填充状态。
- 在每次委托方法调用时更新单元格中的 UIProgressBars
- 在 NSOperation 完成后将项目保留在表中
我当前的代码目前正在运行,但我还没有实现任何表格内容。我想不出跟踪这些项目的最佳方法。也许我需要想出一个 NSObject 子类来保存操作的引用,并用它填充我的表?