2013-04-29 6 views
0

EDIT:Dropbox IOS API - Простые вопросы/DBRestClient Проблемы

Я думаю, что исправили мои вопросы. Спасибо за помощь. Я очень ценю это.


Оригинал Вопрос:

Я новичок в 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

Можете обновить свой вопрос, чтобы показать объявление интерфейса, расположенное в верхней части заголовка (myviewcontroller.h). –

ответ

3

В файле заголовка необходимо указать, что вы будете придерживаться ПРОТОКОЛА DBRestClientDelegate «s.

Например:

@interface MyViewController: UIViewController <DBRestClientDelegate> 

Если вы уже придерживаясь других протоколов, просто добавьте DBRestClientDelegate и запятая Seperate, такие как ...

@interface MyViewController: UIViewController <UITableViewDelegate, DBRestClientDelegate> 

Для получения дополнительной информации, я d рекомендуем прочитать раздел делегирования Cocoa Core Competencies, тем более, что вы встретите делегатов (и, возможно, определите свои собственные протоколы и т. д.) в Cocoa.

+0

Не добавляйте это в файл .h. Добавьте его в расширение класса в файле .m. Не нужно говорить миру, что класс имеет эту деталь реализации. – rmaddy

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> 
+0

Я сделал изменения, и теперь я столкнулся с ошибкой «Ошибка Apple Mach-O Linker». Если я перестановлю объявление DBRestClient * restClient как глобальное в моем .m-файле, я получаю сообщение об ошибке «DropboxSDK: не может инициализировать DBRestClient с сеансом nil», напечатанном на консоли. Не помещаю ли я декларацию в нужное место? – user1764386

Смежные вопросы