Укажите пример NSInMemoryStoreType, скажите мне сценарий, когда это необходимо?

когда нужно использовать NSInMemoryStoreType? потому что он хранит только в памяти, то как это будет полезно для сохранения?

3 ответа

Так как он сохраняет данные в памяти, когда вы закрываете приложение, данные теряются точно, и они не могут быть восстановлены.

Но есть преимущество в использовании NSInMemoryType, и это скорость. Если вы собираетесь сэкономить 100 000 данных с использованием NSInMemoryType, для их добавления потребуется 45 секунд, а счетчик будет возвращен с использованием CountResultType.

Выполнение этого с использованием NSSQLiteStoreType на самом деле занимает более 3-4 минут, и, следовательно, это не лучший способ хранения всех этих данных; если упорство после повторного применения не является обязательным.

Хорошим вариантом использования для памяти является приложение, которое оно меняет каждый раз, когда приложение запускается или закрывается, и хранится более 1000 записей. В этом случае разумно сохранять записи в памяти, так как это невероятно быстро по сравнению с NSSQLiteStoreType.

С другой стороны, если количество хранимых записей не так много, между SQLite и InMemory не будет никакой разницы в скорости, и сохранение записей с использованием NSSQLiteMemoryType было бы намного лучшим выбором.

Я сравнил два и вот результаты:


Тип хранилища в памяти не "сохраняется", потому что он не записывается в файл.

Недавно у меня был хороший вариант: приложение читает сложный XML файл и переводит его в граф объектов данных ядра. Код очень читабельен и может использовать полезные объекты, такие как NSFetchedResultsController.

Единственный реальный возможный аргумент для использования хранилища данных SQLite для Core Data заключался в том, что он позволял быстрее запускать (не обязательно читать XML файл), но это не было требованием к проекту.

Аргументом для хранилища в памяти является то, что он намного быстрее, чем хранилище с сохраненной базой данных.


Это очень полезно, если у вас уже есть база данных CoreData с большим количеством кода, работающего с ней, вы хотите извлечь небольшой объем данных и использовать с ним весь свой существующий код, а это значит, что вам нужна другая база данных CoreData. Вместо того, чтобы создавать новую базу данных в файловой системе со всеми задействованными служебными данными, вы можете просто создать ее в памяти.

licensed under cc by-sa 3.0 with attribution.