Dropbox iOS API - 简单问题/ DBRestClient问题

时间:2013-04-29 19:45:06

标签: ios objective-c dropbox-api

修改

我想我已经解决了我的问题。谢谢你的帮助 - 我真的很感激。


原始问题:

我是Objective-c和iOS编程的新手,所以希望我的问题不难纠正。我正在尝试添加从Dropbox打开文件到我的简单iOS应用程序的功能。我一直在这里关注教程:

http://www.mathiastauber.com/integration-of-dropbox-in-your-ios-application-making-api-calls/

到目前为止,我已成功将我的应用程序链接到我的Dropbox帐户并显示“链接成功”消息。

现在我无法使用DBRestClient。我目前有以下代码:

myviewcontroller.h

...
@end
DBRestClient *restClient;

myviewcontroller.m

- (DBRestClient *)restClient {
    if (!restClient) {
        restClient =
        [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
        restClient.delegate = self;
    }
    return restClient;
}

我收到错误

restClient.delegate = self;

表示 "Assigning to 'id<DBRestClientDelegate>' from incompatible type 'myviewcontroller'"

可能出现什么问题?我已经阅读了我能找到的每个例子,并且可以看到我正在尝试做的事情没有问题。

如果我尝试通过执行以下操作进行投射,则无效

restClient.delegate = (id)self;

我还发现,如果我删除myviewcontroller.m中的代码并且只在头文件中有变量声明(如上所示),我会收到一条错误消息“Apple Mach-O Linker Error”

我非常感谢您提供的任何帮助。我非常坚持这个问题。

2 个答案:

答案 0 :(得分:3)

在您的标头文件中,您需要指定您遵守DBRestClientDelegate协议

例如:

@interface MyViewController: UIViewController <DBRestClientDelegate>

如果您已经遵守其他协议,只需添加DBRestClientDelegate和逗号分隔,例如......

@interface MyViewController: UIViewController <UITableViewDelegate, DBRestClientDelegate>

有关更多信息,我建议阅读Cocoa Core Competencies的“委派”部分,特别是当您在Cocoa中遇到代表(实际上可能定义自己的协议等)时。 / p>

答案 1 :(得分:2)

错误是因为restClient.delegate = self;的右侧不属于id<DBRestClientDelegate>

类型

id<DBRestClientDelegate>基本上是符合DBRestClientDelegate协议

的任何对象

删除错误的第一步(可能只是步骤)在Myviewcontroller.h文件中

变化

@interface Myviewcontroller : UIViewController   //<-- my best guess at your interface line

@interface Myviewcontroller : UIViewController <DBRestClientDelegate>