0

编辑:

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


原始问题:

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

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

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

现在我在使用 DBRESTClient 时遇到了问题。我目前有以下代码:

我的视图控制器.h

...
@end
DBRestClient *restClient;

我的视图控制器.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”

我将不胜感激您能提供的任何帮助。我非常坚持这个问题。

4

2 回答 2

3

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

例如:

@interface MyViewController: UIViewController <DBRestClientDelegate>

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

@interface MyViewController: UIViewController <UITableViewDelegate, DBRestClientDelegate>

有关更多信息,我建议您阅读Cocoa Core Competencies的委派部分,尤其是当您在 Cocoa 中会遇到很多委托(实际上可能定义自己的协议等)时。

于 2013-04-29T19:52:56.353 回答
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>
于 2013-04-29T19:52:37.963 回答