Для небольших наборов данных, если вам нужна возможность чтения и записи, вы должны пойти с NSUserDefaults
- если вы получаете возможность хранить и извлекать ключ-значение без лишних хлопот.
Если вам нужен доступ только для чтения, то файлы plist являются жизнеспособным вариантом, так как он сохраняет абстракцию по понятию ключевого значения и предлагает доступный API для работы.
Плоские файлы рекомендуется, если вам нужна другая модель настойчивости, чем значение ключа, иначе это означало бы просто изобретать колесо.
Sqlite подходит для случая, когда ваши данные организованы в сильной реляционной манере, и вместо ключевого значения вы предпочтете, чтобы мощь sql работала напрямую с вашими данными.
Если для вашего набора данных, каким бы маленьким он ни был, было бы лишним неудобством управлять низкоуровневым хранилищем и извлечением, тогда вы могли бы выбрать CoreData. С помощью CoreData код может извлекать и обрабатывать данные на чисто объектном уровне, не беспокоясь о деталях хранения и извлечения, поэтому вы будете более сосредоточены на своей логике домена, а не на установке на логику хранения и обработки данных.
Это полностью зависит от ваших целей. Лучший вопрос: «Моему приложению нужно [указать свои требования], какой лучший подход?» –
для эффективности небольших данных, вероятно, в основном о том, «что поможет мне сделать приложение скорейшим?» –