Я сделал то же самое (создал базу данных основных данных в MacOS, скопировал файл sqlite и использовал его на iPhone), и он, казалось, работал отлично. Однако недавно я столкнулся с проблемой производительности, вызванной этим подходом, для которой я пока не нашел другого решения, кроме как вернуться к созданию базы данных в эмуляторе iPhone. Проблема заключается в следующем:
если между двумя таблицами есть отношение n: m, то iPhone-код основных данных создает таблицу ссылок, которая выглядит следующим образом:
CREATE TABLE Z_13FOO (Z_13BAR2 INTEGER, Z_15FOO INTEGER, ПЕРВИЧНЫЙ КЛЮЧ (Z_13BAR2, Z_15FOO));
В то время как аромат MacOS создает это:
CREATE TABLE Z_13FOO (Z_13BAR2, Z_15FOO);
CREATE INDEX Z_13FOO_Z_13BAR2_INDEX ON Z_13FOO (Z_13BAR2);
CREATE INDEX Z_13FOO_Z_15FOO_INDEX ON Z_13FOO (Z_15FOO);
Хотя, похоже, что два индекса в таблице соединения позволят быстро объединить таблицы foo и bar, я измерил снижение производительности более чем в 100 раз по сравнению с версией с ограниченным первичным ключом, которую создали основные данные iPhone.
Возможно, эта проблема не относится к вашему случаю, но вы должны знать об этом при анализе проблем с производительностью, поскольку это не столь очевидная ошибка !!!
Если у кого-то есть решение для этой проблемы, которое позволило бы мне использовать MacOS Core Data для создания базы данных, как я изначально планировал - пожалуйста, опубликуйте ответ здесь !!!