I did exactly the same (create a core data database on MacOS, copy the sqlite file and use it on the iPhone) and it seemed to work perfectly. However, recently I ran into a performance issue that is caused by this approach and for which I did not find another solution yet than going back to creating the database in the iPhone emulator. The issue is the following:
if you have a n:m relationship between two tables then the iPhone flavor of Core data creates a link table that looks like this:
CREATE TABLE Z_13FOO ( Z_13BAR2 INTEGER, Z_15FOO INTEGER, PRIMARY KEY (Z_13BAR2, Z_15FOO) );
Whereas the MacOS flavor creates this:
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);
Although it looks like the two indexes on the join table would allow fast joining between tables foo and bar I measured a performance penalty of more than factor of 100 compared to the primary key constrained version the iPhone Core Data created.
It might be that this issue is not relevant in your case, but it is something you should be aware of when analyzing performance issues as this is a not so obvious pitfall!!!
If anyone has a solution for this issue that would allow me to use MacOS Core Data to create the database as I had originally planned - please post an answer here!!!