Почему существует несоответствие между FileManager и Finder? - PullRequest
0 голосов
/ 21 ноября 2018

Если я распечатываю каталог документов при запуске симулятора, я получаю следующее:

let simulatorPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
print(simulatorPath)


//prints -> /Users/name/Library/Developer/CoreSimulator/Devices/[device-id]/data/Containers/Data/Application/[application-id]/Documents

Если я открываю этот каталог с помощью Finder, там есть еще несколько папок: / Library, / SystemData и/ TMP.В частности, /Library/Caches/[domain.app]/[several кэш-файлы].

Однако в моем приложении я создаю базу данных sqlite с помощью файлового менеджера.И если я сделаю следующее после создания базы данных:

var path = FileManager.default.currentDirectoryPath + "Library/Caches"

let enumerator = FileManager.default.enumerator(atPath: path)
while let obj = enumerator?.nextObject() as? String {
  print(obj)
}

Будет напечатано:

ColorSync
ColorSync/com.apple.colorsync.devices
Desktop Pictures
Desktop Pictures/78DJQ81B-3D2C-46C7-A268-3CE1903213FE
Desktop Pictures/78DJQ81B-3D2C-46C7-A268-3CE1903213FE/lockscreen.png
domain.app
domain.app/SQLite
com.apple.cloudkit
com.apple.cloudkit/com.apple.cloudkit.launchservices.hostnames.plist
com.apple.iconservices.store
app
app/SQLite
app/SQLite/cache.db

Но содержимое папок /Library/Caches/[domain.app]отличается при печати с помощью перечислителя, в сравнении с посещением в Finder.Я ошибаюсь, полагая, что

NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]

и

FileManager.default.currentDirectoryPath + "/Documents"

указывают на одно и то же место?

1 Ответ

0 голосов
/ 23 ноября 2018

Спустя некоторое время, спотыкаясь о Finder, я обнаружил, что созданный мной файл базы данных SQLite обнаруживается в /Library/Caches, но в корневом каталоге моего жесткого диска.В соответствии с документами для FileManager.default.currentDirectoryPath:

Когда приложение запускается, это свойство изначально устанавливается в текущий рабочий каталог приложения.Если текущий рабочий каталог по какой-либо причине недоступен, значение этого свойства равно nil.

Учитывая это, я решил, что когда я напечатал это значение, и / получилось, это было относительноссылаясь на текущий каталог симулируемого приложения.Если кто-то знает, почему это так, комментарии приветствуются.

...