从NSObject调用时,DBRestClient无法正常工作

时间:2014-01-20 15:58:15

标签: ios objective-c dropbox

我是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:@"/"];
没有任何反应。

1 个答案:

答案 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;