David,
it sounds like you're describing the following situation:
(1) you run your App in a simulator. initially, there is no data (unless you've included some on app setup), but your App can then create and update data as it runs, and the modified data is persisted using CodeData.
(2) as you run your App repeatedly on the same simulator, you have access to the data as created and modified from the previous run(s).
(3) you run your App on a physical device and you see no data that was used in the simulator.
(4) you run your App on a different simulator and see no data in your iPad simulator.
this is correct behavior. CoreData is persisted on disk, on the device on which it's running. (you determine where it is persisted in creating the CoreData stack.) each simulated device is effectively a different device, as is any physical device you might use.
if you're asking about how to create and modify data stored using CoreData in a simulator or physical device and then carry that over to other simulators or physical devices, that has a complicated answer. one possible option is to synch devices using iCloud.
if you're asking how to pre-populate a CoreData database in your App so that it is non-empty when installed on a device and run for the first time, there are several methods.
if the database is small, you can write code that runs during startup: once the CoreData stack is set up and you recognize the data store is empty, create initial objects directly in code. if the database is large, well, that's another thing.
J.