0

編集:

問題は解決したと思います。助けてくれてありがとう - 本当に感謝しています。


元の質問:

私は 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」というエラーが表示されることもわかりました。

ご協力いただけると幸いです。私はこの問題に非常に悩まされています。

4

2 に答える 2

3

DBRestClientDelegateヘッダー ファイルでは、のプロトコルに従うことを指定する必要があります。

例えば:

@interface MyViewController: UIViewController <DBRestClientDelegate>

すでに他のプロトコルに準拠している場合は、DBRestClientDelegate とコンマ区切りを追加するだけです。

@interface MyViewController: UIViewController <UITableViewDelegate, DBRestClientDelegate>

詳細については、Cocoa Core Competenciesの Delegation セクションを読むことをお勧めします。特に、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 に答える