Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从NSObject调用DBRestClient时不工作_Ios_Objective C_Dropbox - Fatal编程技术网

Ios 从NSObject调用DBRestClient时不工作

Ios 从NSObject调用DBRestClient时不工作,ios,objective-c,dropbox,Ios,Objective C,Dropbox,我对IOS还比较陌生,现在正在做一个大项目,需要从dropbox和googleDrive等存储渠道访问文件 我设法访问了dropbox文件并对其进行了操作,但问题是,如果视图类(UITableView,在我的例子中)不是MVC,那么如果没有DBRestClient属性,我就无法做到这一点 当我尝试在另一个类上使用它时,比如说实现DBRestClientDelegate的NSObject,什么都没有发生 我知道这个问题以前已经发布过,有人说,NSObject需要有一个对它的强引用,这样它就不会被释

我对IOS还比较陌生,现在正在做一个大项目,需要从dropbox和googleDrive等存储渠道访问文件

我设法访问了dropbox文件并对其进行了操作,但问题是,如果视图类(
UITableView
,在我的例子中)不是MVC,那么如果没有DBRestClient属性,我就无法做到这一点

当我尝试在另一个类上使用它时,比如说实现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!!!!!!!!!!!!!!!!!!!");
}
但当我尝试加载元数据时:

[[self.dropboxFolderItemsTableView.dropboxServices restClient] loadMetadata:@"/"];

什么也没发生。

在几乎两周没有反应后,我尝试了一种完全不同的方法。 我在这篇文章中发现了一个有趣的事实,即我的每个UITableView的代理控制器不必是显示它的视图控制器

因此,我可以将DBRestClient放在一个新创建的viewController(在我的例子中是一个tableViewController)中,并从实际包含表视图的视图控制器中对其进行强引用,然后分配实际的dropbox tableView(dropboxFolderItemsTableView)作为新创建的viewController的表视图

self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;

虽然我不认为这个解决方案能很好地解决MVC的问题,但我面临着和你们一样的问题。我将寻找一个更合适的解决方案。
self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;