Основные данные: как избежать дублирования при вставке данных в coredata
Я использую основные данные и имею NSManagedObjectContext
подкласс для моей модели.
На viewDidLoad
:
Я пытаюсь извлечь из основных данных.
Также запускается сетевой вызов, который в случае успеха сохранит объекты модели в основных данных и извлечет их снова для обновления пользовательского интерфейса.
Проблема, с которой я столкнулся, есть на каждом viewDidLoad
У меня были данные, добавленные снова и снова, означающие, что если у меня будет 4 результата от вызова n / w, у меня будет 2 набора тех же 4 результатов, если я загрузил представление во второй раз и так далее.
Я избежал этого, проверив дублирование вручную перед сохранением результатов, полученных по сети.
Я не думаю, что это чистый подход, а также я хочу использовать NSFetchedResultsController
за UICollectionView
чтобы сделать выборку более эффективной.
Будет использовать NSFetchedResultsController
помочь в любом случае избежать проблемы?
Также кто-нибудь пробовал обертки AFIncrementalStore или SSDataKit для основных данных? Какие-нибудь предложения, на которых было бы лучше?
1 ответ
Если вы можете использовать его, RestKit сделает это за вас. Но это в основном то же самое. Он предлагает несколько вариантов кэширования, чтобы сделать проверку дублирования быстрой, но где-то еще должна быть проверка.
Я не уверен, как вы думаете, FRC может помочь с проверкой дублирования. Использование запроса на выборку для получения словарного результата, содержащего только соответствующие идентификационные атрибуты, но не полный FRC.
Основные данные сами по себе не имеют понятия "дубликат". См. Раздел документации Apple "Реализация поиска или создания эффективно" здесь для рекомендаций.