First, let me state that this is a huge amount of contradictory information on this forum due to the UICR registers behaving differently for each generation of nRF. Please only comment if you know how the nRF52840 works.
Also, in general, in order of ease of changing values, the industry standard language is to use: RAM > Registers > Flash > OTP. I sincerely hope that UICR REGISTERS are not one time programmable (OTP) as it seems. If so, Nordic need to change the name of these to OTP!!!
I'm able to change the UICR registers using the NVMC when APPROTECT is disabled, but not when APPROTECT is enable. Is this the intended behavior? Is there any way to work around this?