我对IOS相当陌生,我现在正在从事这个需要从dropbox和googleDrive等存储通道访问文件的大型项目。
我成功地访问了dropbox文件并对它们进行了操作,但问题是,如果没有视图类上的DBRestClient属性(在我的例子中是UITableView),就无法做到这一点。
当我尝试将它放在另一个类上时,比如一个实现了NSObject的DBRestClientDelegate,什么都不会发生。
我知道这个问题已经发布过了,有些人说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!!!!!!!!!!!!!!!!!!!");
}下面是我以前在UITableView中使用的DBRestClient类:
@interface DropboxFolderItemsTableView : UITableView
@property (nonatomic, readonly) DropboxServices *dropboxServices;但是当我尝试加载元数据时:
[[self.dropboxFolderItemsTableView.dropboxServices restClient] loadMetadata:@"/"];什么都没发生。
发布于 2014-02-05 14:59:08
在几乎两周没有反应后,我尝试了一种完全不同的方法。在这篇文章中,我发现了一个有趣的事实:Custom UIView as UITableView delegate and datasource?,即我的每个UITableViews的委托控制器不必是显示它的视图控制器。
因此,我可以将我的DBRestClient放在一个新创建的viewController中(或者在我的示例dropboxFolderItemsTableViewController中是一个tableViewController ),并从实际包含表视图的视图控制器中获得对它的强烈引用,然后将实际的dropbox tableView (dropboxFolderItemsTableView)分配给这个新创建的viewController的表视图。
self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;https://stackoverflow.com/questions/21238509
复制相似问题