RestKit: изменить базовый URL-адрес RKObjectManager

Можно ли изменить базовый URL-адрес RKObjectManager после создания?

У меня есть окно для входа в систему, и от псевдонима я решаю, какой URL для API я должен использовать. Если я создам RKObjectManager после заполнения ник / пароля, я могу сделать только один вызов из RestKit ( https://groups.google.com/forum/?fromgroups#!topic/restkit/wFNhpCW-URA ). Если я создаю функцию RKObjectManager viewDidLoad – я не могу изменить URL.

Есть ли такое же решение моей проблемы?

Благодарю.

4 Solutions collect form web for “RestKit: изменить базовый URL-адрес RKObjectManager”

Просто потратил некоторое время на выяснение того, как это можно сделать в v0.20. Из того, что я могу сказать, вы не можете напрямую изменить базовый URL-адрес, не входя в исходный код AFNetworking. Вы можете создать новый HTTPClient и установить его, но я обнаружил, что это вызвало еще больше проблем, по-видимому, потому что RestKit делает дополнительную настройку в HTTPClient HTTPClient при настройке RKObjectManager и, устанавливая клиента напрямую, вы упускаете это.

Я придумал это решение, которое должно создать еще один RKObjectManager с новым baseURL и повторно добавить дескрипторы. Вам также потребуется снова установить типы сериализации и заголовков.

 NSString *urlString = @"http://www.something.com/api"; RKObjectManager *newManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:urlString]]; [newManager setRequestSerializationMIMEType:RKMIMETypeJSON]; [newManager setAcceptHeaderWithMIMEType:RKMIMETypeJSON]; [newManager addResponseDescriptorsFromArray:[RKObjectManager sharedManager].responseDescriptors]; [newManager addRequestDescriptorsFromArray:[RKObjectManager sharedManager].requestDescriptors]; [RKObjectManager setSharedManager:newManager]; 

Связанная документация: использование нескольких базовых URL-адресов в RestKit

Вот способ изменения RestKit baseURL после init:

 [RKObjectManager sharedManager].client.baseURL = [RKURL URLWithString:newBaseUrlString]; 

Уведомление из документа RestKit:

Изменение baseURL имеет побочный эффект, вызвавший восстановление экземпляра requestCache. Кэши поддерживаются для каждого узла.

Я использую его, и он отлично работает 🙂

Быть осторожен!

Я использовал принятый ответ для RestKit 2.0, но, к сожалению, это привело к сложному отладке сбоя в режиме restkit. То, что работало, было просто инкапсулировать все создание дескриптора и другие параметры objectmanager в метод и вызвать его с новым объектом диспетчера объектов перед вызовом [RKObjectManager setSharedManager: newManager];

Я не думаю, что для этого есть решение. RestKit использует базовый URL-адрес внутри и не может быть изменен.

  • Будет ли динамическое сопоставление RestKit решать это сложное отображение JSON?
  • Проблемы с RESTKit не могут правильно отображаться
  • RestKit - проверка подлинности
  • RestKit - Не удалось отобразить данные JSON на моем TableView
  • Интеграция данных с базой данных Restkit Core с NSManagedObjectContext
  • RestKit: как получить простой массив строк JSON?
  • Как установить значения заголовка в Restkit
  • Проблемы с обновлением CoreData
  • Преобразование значения RestKit .20.x
  • RestKit: что я теперь использую, когда `postObject mapResponseWith: delegate:` устарел?
  • Как игнорировать пустые свойства размещенных объектов с помощью restkit
  • Как отправить некоторые данные в http-заголовок с помощью restkit
  • Interesting Posts
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.