I'am, в настоящее время мигрирующий приложение для iPhone с помощью SQLite для CoreData.
Я должен сделать ВСТАВКУ или ЗАМЕНУ для добавления только нового содержания, есть ли способ сделать это, или я должен выбрать весь DB и искать существующие объекты и добавить новые?
Спасибо.
Помните, что Core Data - это иерархия объектов, которая сохраняется в базе данных, поэтому вам нужно рассматривать ее как граф объектов, а не , а базу данных.
Следовательно, да, вам нужно проверить, существует ли уже объект, используя определенный уникальный идентификатор, и если он в настоящее время не существует, вам нужно создать новый объект вместо обновления существующего объекта.
Вам не нужно извлекать все объекты, выполните поиск в хранилище с помощью NSFetchRequest
и NSPredicate
для проверки существования; если он существует, обновление, если он его не создает.
См. Этот документ Apple под названием «Эффективный импорт данных». Это именно та тема, которую вы хотели бы изучить. В частности, внимательно прочтите раздел «Эффективная реализация функции поиска или создания».
И, конечно же, купите книгу Маркуса Зарры о Core Data, это фантастика :)