Я бы не стал оптимизировать это до того, как вы профилируете свое приложение. Использование 2 МБ памяти звучит как много, но есть игры, которые загружают несколько раз только для звуков и изображений. Если в вашем приложении все эти 2 МБ данных, то я думаю, что вполне нормально просто загрузить его в память и использовать.
Если, с другой стороны, загрузка идет слишком медленно, вы можете рассмотреть возможность использования NSKeyedArchiver
и NSKeyedUnarchiver
для загрузки ваших данных. Они быстрее, чем загрузка списков, и вы можете выборочно загружать порции данных, если вы можете разделить их на логические части.
Другой вариант, конечно, использовать SQLite или Core Data. Они идеально подходят для «таблиц» данных. Оба могут работать с большими файлами.