So, if I understand correctly, you want to use (and save) 2 pricing tables:
the default one that may be updated when app is updated
the user's one if he/she has defined. And you want user to be able to keep it if desired.
What is the size of these pricing tables ?
If they are not too large (let's say, less than 1000 items), I would:
create a dictionary with the price list
include the default pricing in a JSON and include it in the project resources
if user creates a price list, save it in User.defaults as another JSON (containing only the prices that were modified).
When you load the app, you first decode the default pricing from the JSON
Then you read user defaults to see if some price has to be superseded by a user price. You update the price dictionary for those keys (product name)
Doing so will allow:
add new prices in the JSON when you create a new release or modify some default prices
work with whatever number of prices modified by user (even 0)
preserve user prices. When uploading new release, you may ask user if he wants to keeps its prices or update with new defaults. If so, you should clear those user defaults.
If several 1000 of items, SwiftData may be a better choice.
This may help you create the JSON from the initial dictionary: https://www.tutorialspoint.com/convert-a-dictionary-to-json-in-swift
Please tell if anything is not clear enough.