как хранить все эти предварительно созданные данные?

 в настоящее время я храню некоторые часто используемые массивы и словари в файлах .plist. тем не менее, дубликаты данных существуют в этих файлах. вместо этого я хотел бы иметь возможность реализовать что-то более похожее на реляционную базу данных, чтобы хранить ссылки на данные, а не повторять их. я предполагаю, что нет никакого способа сделать это с файлами plist, но coredata кажется излишним для этого. 
 одна мысль, которую я имел, состояла в том, чтобы создать подклассы nsarray и nsdictionary для обеспечения значений по умолчанию. вместо того, чтобы загружать словарь из файла plist, любой объект, которому нужны данные, вместо этого просто создает один из этих подклассов nsarray / nsdictionary (который, в свою очередь, создает экземпляры других из этих подклассов, когда это необходимо - это то, как функциональность «реляционной базы данных» будет быть достигнутым). это разумный подход, или есть какой-то другой инструмент в ios или xcode, о котором я не знаю и который сделал бы это простым? 

 если данные никогда не изменятся, я буду придерживаться вашего текущего подхода, если только у вас не возникнут проблемы с производительностью. другой вариант - переместить все в sqlite, а затем использовать оболочку, такую как fmdb. 
 если данные являются исходными данными, которые будут меняться в течение всего жизненного цикла приложения (вам необходимо постоянство между запусками), я бы переключился на coredata. 
 независимо от того, что вы делаете, я бы держался подальше от подклассов nsarray / nsdictionary. вы можете предоставить значения по умолчанию без создания подклассов. 

 я использовал sqlite в подобных ситуациях. вот видео всего, что я узнал об использовании sqlite в приложениях ( класс стэнфорда ). я предполагаю, что есть много других примеров. 
 приятно то, что вы можете использовать различные инструменты / плагины для ввода или управления вашими данными. затем просто сделайте все необходимые запросы в своем коде.