Я пытаюсь понять некоторый код, с которым я недавно столкнулся.
В ответе на вопрос здесь https://stackoverflow.com/a/51173170/1162328 автор использовал Строка со спецификатором формата при циклическом просмотре файлов в documentDirectory. Кто-нибудь может пролить свет на то, что на самом деле делает %@/%@
?
for fileName in fileNames {
let tempPath = String(format: "%@/%@", path, fileName)
// Check for specific file which you don't want to delete. For me .sqlite files
if !tempPath.contains(".sql") {
try fileManager.removeItem(atPath: tempPath)
}
}
Чтение Архив документации Apple по основам форматирования Я наткнулся на это:
В строках формата символ «%» объявляет местозаполнитель для значения, а следующие за ним символы определяют тип ожидаемого значения и способ его форматирования. Например, строка формата «%d house» предполагает замену выражения формата «%d» целочисленным значением. NSString поддерживает символы формата, определенные для функции printf() ANSI C, плюс ‘@’ для любого объекта.
Что именно тогда делает %@/%@
?
%@
в Swift — это то же самое, что и интерполяция.let tempPath = "\(path)/\(fileName)"
- person Sulthan   schedule 18.01.2020String(format: "%@/%@", path, fileName)
это не то, как написал бы это любой разработчик Swift со средним опытом. Конкатенация строк (path + filename
) или интерполяция ("\(path)/\(filename))
) являются гораздо более разумными способами соединения строк. Но что более важно, вы не должны использовать строки для моделирования путей/URL-адресов, для чего предназначен URL, и у него уже есть замечательныйappendingPathComponent
API. - person Alexander   schedule 19.01.2020