Как заменить весь файл с помощью FileManager

#ios #swift #caching #nsfilemanager

Вопрос:

Допустим, у меня есть UIImage кэш в моей папке кэша: /.../Cache/Image Cache/<firstImage.id>

Теперь я хочу, чтобы в этой папке одновременно кэшировалось только 10 изображений, поэтому, если появится новое, я хочу взять файл и заменить весь файл, а не только его содержимое. То есть /.../Cache/Image Cache/<firstImage.id> становится. /.../Cache/Image Cache/<secondImage.id>

Насколько я могу судить, replaceItem(at:withItemAt:backupItemName:options: заменяет только содержимое файла, но имя файла остается прежним. И я не слишком уверен, что replaceItem(at:withItemAt:backupItemName:options:resultingItemURL:) делает, хотя это может быть то, что я ищу (я не знаю, что AutoreleasingUnsafeMutablePointer<NSURL?>? это было, но это звучало опасно, поэтому я решил оставить это в покое, особенно потому, что в нем есть слово «небезопасно»).

Есть ли простой способ сделать это с помощью встроенной функции или лучше всего вручную удалить старый файл и добавить новый файл? Пожалуйста, дайте мне знать.

Заранее спасибо!

Комментарии:

1. Удаление существующего файла и создание нового файла- это простой способ, если имена файлов разные.

2. @MartinR Разве для этого нет встроенной функции replace(...) ? Я предположил, что будет один, учитывая, что это кажется таким обычным делом.

3. Если вам всегда нужен только один файл, почему бы вам не использовать фиксированное имя файла? Тогда замена-это все, что вам нужно сделать.

4. @MartinR О, мне на самом деле нужно максимум 10 файлов, я просто сказал 1 для простоты, но я изменю свой вопрос, чтобы отразить это. Но есть ли какая-либо встроенная функция для замены всего файла (включая имя файла)?

5. Нет, это не так.