14. - (id)executeRequest:(NSPersistentStoreRequest *)request
withContext:(NSManagedObjectContext *)context
error:(NSError **)error
if (request.requestType == NSFetchRequestType) {
NSFetchRequest *fRequest = (NSFetchRequest *)request;
switch (fRequest.resultType) {
***
case NSDictionaryResultType: {
/* Выборка значений конкретных полей */
//Результат - массив NSDictionary.
//Ключи - название полей данных, значения - сами данные
}
break;
case NSCountResultType: {
/* Подсчёт количества объектов */
//Результат - массив, состоящий из одного NSNumber-а
}
break;
16. - (NSIncrementalStoreNode *)newValuesForObjectWithID:(NSManagedObjectID *)objectID
withContext:(NSManagedObjectContext *)context
error:(NSError **)error;
/* Выбрать все данные для объекта с заданным ObjectID */
/*
Заполнить NSDictionary полученными значениями:
Ключ - название поля объекта в DataModel
Значение - конкретное значение для объекта
*/
return [[NSIncrementalStoreNode alloc] initWithObjectID:objectID
withValues:objectDataDict
version:version];
17. - (id)newValueForRelationship:(NSRelationshipDescription *)relationship
forObjectWithID:(NSManagedObjectID *)objectID
withContext:(NSManagedObjectContext *)context
error:(NSError **)error;
if (relationship.isToMany) {
return [NSManagedObject, NSManagedObject, ...] или []
}
else {
return NSManagedObject или [NSNull null]
}
20. Полезные ссылки
Демонстрационное приложение:
https://github.com/GusevAndrey/NSIncrementalStoreInUse
Programming Guide:
https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/IncrementalStorePG/Introduction/
Introduction.html
Class reference:
https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSIncrementalStore_Class/Reference/
NSIncrementalStore.html
Пара статей по NSIncrementalStore:
http://nshipster.com/nsincrementalstore/
http://sealedabstract.com/code/nsincrementalstore-the-future-of-web-services-in-ios-mac-os-x/
Статья о реализации загрузки данных с сервера в CoreData:
http://chris.eidhof.nl/post/17826914256/accessing-an-api-using-coredatas-nsincrementalstore
Живой проект AFNetworking + NSIncrementalStore:
https://github.com/AFNetworking/AFIncrementalStore
Приложение Looky:
https://itunes.apple.com/ru/app/id579331601
agusev@neosphere.com