Search code examples
objective-cioscocoa-touchnsbundle

Replacing images in the bundle at run time


Can I replace images in bundle at run time? Basically, I have some images part of my bundle and also I will have them from the server if there is any change in the image. Can I place them in the bundle at run time so that I need not to change my code to pick the image?


Solution

  • You cannot change the contents of an Application bundle.

    It is however possible to store the images in the Application's documents folder. Then you'll be able to overwrite those images in case they need to be changed.

    There are two ways to achieve this:

    1. At launch, check whether the image files exist in the documents directory. If not, copy the bundle images to the document folder.
    2. Every time you load an image, check if it exists in the documents directory. If it does, load it, otherwise load the one from the bundle. This avoids copying the data thus leading to less disk usage, however it's more work to implement.