MVC Design для приложения, использующего RestKit - PullRequest
1 голос
/ 17 марта 2012

Я пытаюсь создать приложение, максимально точно соответствующее MVC, используя RestKit. Цель состоит в том, чтобы включить RKObjectMapping и RKObjectManager, чтобы мои объекты могли быть загружены с помощью [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/object" delegate:self].

В моем текущем дизайне у меня есть следующее:

Objects
- MYBaseObject : NSObject
- MYObjectA : MYBaseObject
- MyObjectB : MYBaseObject
...
ObjectControllers
- MYBaseObjectController : NSObject
- MYObjectAController : MYBaseObjectController
- MYObjectBController : MYBaseObjectController
...
ViewControllers
- MYBaseViewController : UIViewController
- MYViewController1 : MYBaseViewController
...

Я также представил делегата по имени MYBaseObjectControllerDelegate, который действует как адаптер / оболочка для различных вещей, которые могут включать делегирование (например, асинхронные запросы), а также в случае, если я решу не использовать RestKit в будущем.

1) В идеале я бы хотел сделать в MYViewController следующее:

self.arrayOfMYObject = [MYObjectA allObjectsWithDelegate:self];

Кажется, я не могу придумать, как заставить подобные вещи работать, используя делегирование. Проблема в том, что мне нужно как-то return значение ответа, и я не могу придумать, как это сделать, используя только делегирование.

2) Я хотел бы знать, где должны находиться различные RestKit декларации RKObjectMapping и тому подобное. Должны ли они жить в соответствующих контроллерах для каждого из Объектов, или они должны жить в самих объектах? Какая будет подходящая структура?

Будучи новичком в RestKit Я бы хотел, чтобы это было как можно более правильным в первый раз, чтобы избежать серьезного рефакторинга.

1 Ответ

0 голосов
/ 20 марта 2012

Проверьте https://github.com/RestKit/RKGithub в качестве примера приложения для возможной отправной точки.

Я успешно адаптировал эту структуру для своих собственных приложений.

При этой структуре отображение располагается на корневом уровне и затем вызывается контроллерами.

...