#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. Нет, это не так.