修改
我想我已经解决了我的问题。谢谢你的帮助 - 我真的很感激。
原始问题:
我是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”
我非常感谢您提供的任何帮助。我非常坚持这个问题。
答案 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>