RestKit с основными данными: используйте NSPersistentStore с RestKit RKObjectManager

Я использую RestKit с Core Data. До сих пор я инициализировал RestKit следующим образом:

[...]
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURLString:@"http://URL"];
objectManager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"database.sql"];
[...]

без этого xcode автоматически сгенерированные свойства основных данных:

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

Выборка данных работала с помощью вызова objectsWithFetchRequest: в NSManagedObject. Теперь я хотел бы использовать NSFetchingResultsController и, следовательно, мне нужен по крайней мере такой управляемый объект. Но откуда мне взять этот управляемый объектный текст? Моя первая идея заключалась в следующем: из автоматически сгенерированного управляемого ObjectContext в AppDelegate.m, но эти 3 свойства managedObjectContext, managedObjectModel и persistentStoreCoordinator все зависят друг от друга.

Как правильно "связать" RestKit с Core Data? Как я могу "связать" persistentStoreCoordinator с RestKit и RKObjectManager?

2 ответа

Нашел ответ на http://mobile.tutsplus.com/tutorials/iphone/advanced-restkit-development_iphone-sdk/

RKManagedObjectStore - хранилище объектов оборачивает инициализацию и конфигурацию внутренних классов базовых данных, включая NSManagedObjectModel, NSPersistentStoreCoordinator и NSManagedObjectContext.

RestKit обрабатывает "связь" с Core Data тихо и автономно. Там нет ссылок, чтобы сделать.

Получение NSFetchingResultsController возможно через NSManagedObject, вызывающий fetchAllSortedBy или подобный метод в NSManagedObject+ActiveRecord.heg

fetchedResultsController = [Customer fetchAllSortedBy:@"surname" ascending:YES withPredicate:nil groupBy:@"surname"];

Вы уже связываете RestKit и Core Data с этим кодом. Теперь, если я понимаю вопрос, вам просто нужно получить доступ к контексту управляемого объекта. Попробуйте создать объект "Core Data Manager", который содержит весь код, необходимый для контекста, модели и координатора хранилища с этими свойствами. Тогда любой из ваших классов, которым требуется этот код, может просто наследоваться от основного менеджера данных.

Другие вопросы по тегам