我是IOS的新手,我现在正致力于这个需要从存储渠道访问文件的大项目,例如dropbox和googleDrive ......
我设法访问了Dropbox文件并对它们进行了操作,但问题是我没有在视图类(我的情况下为UITableView
)上没有DBRestClient属性的情况下这样做,这不是MVC
当我尝试将它放在另一个类上时,比如实现DBRestClientDelegate的NSObject
,没有任何反应。
我知道此问题已经发布过,有些人说NSObject
需要强烈引用它,以便它不会被释放,但我做到了这一点,但仍然没有任何反应。
以下是我的一些代码:
NSObject
类DropboxServices
@interface DropboxServices : NSObject <DBRestClientDelegate>
@property (nonatomic, readonly) DBRestClient *restClient;
@implementation DropboxServices
@synthesize restClient=_restClient;
- (DBRestClient *)restClient {
if (!_restClient) {
if ( [[DBSession sharedSession].userIds count] ) {
_restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
_restClient.delegate = self;
}
}
return _restClient;
}
- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
NSLog(@"method called!!!!!!!!!!!!!!!!!!!");
}
以下是我过去使用DBRestClient的UITableView
类:
@interface DropboxFolderItemsTableView : UITableView
@property (nonatomic, readonly) DropboxServices *dropboxServices;
但是当我尝试加载元数据时:
[[self.dropboxFolderItemsTableView.dropboxServices restClient] loadMetadata:@"/"];
没有任何反应。
答案 0 :(得分:0)
经过近2周没有回应,我尝试了一种完全不同的方法。 我在这篇文章Custom UIView as UITableView delegate and datasource?中发现了一个有趣的事实,那就是我的每个UITableViews的委托控制器都不一定是显示它的视图控制器。
所以我可以把我的DBRestClient放在一个新创建的viewController(或者我的案例中的tableViewController dropboxFolderItemsTableViewController)中,并从我的视图控制器中实际包含表视图的强引用,然后分配实际的dropbox tableView( dropboxFolderItemsTableView)是这个新创建的viewController的表视图。
self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;