Проверьте размер локального файла в Swift 4 - PullRequest
0 голосов
/ 08 июня 2018

У меня есть этот код:

func fileSize(url: String?)-> UInt64  {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)


    guard let fileUrl = URL(string:  url!) else {
        print("Problem in converting string to URL @@@@@@@@@@@ \(url)")
        return 0
    }



    let directory = paths[0] + "/" + (fileUrl.path)
    let fileManager = FileManager.default
    do {
        let attributes = try fileManager.attributesOfItem(atPath: (directory))
        var fileSize = attributes[FileAttributeKey.size] as! UInt64
        let dict = attributes as NSDictionary
        fileSize = dict.fileSize()
        return fileSize
    }
    catch let error as NSError {
        print("Something went wrong: \(error)")
        return 0
    }
}

Эта функция должна удалять файлы из каталога Docs на мнемоническом устройстве.К сожалению, это не работает, и я каждый раз получаю сообщение об ошибке:

- Problem in converting string to URL @@@@@@@@@@@@@@ Optional ("en / GET_LEAFLETS_PDF / Leaflet new_OK-prev.pdf")
- Problem in converting string to URL @@@@@@@@@@@@@ Optional ("en / GET_TIPS_SLIDES / Golden video of frying ___ 006.jpg")
- Problem in converting string to URL @@@@@@@@@@@@@ Optional ("en / GET_TIPS_SLIDES / Spaces od love ___ 016.jpg")
etc

В чем ошибка?Кто-нибудь знает, как это исправить?

**** ОБНОВЛЕНИЕ ****

Это рабочий код:

func fileSize(url: String?)-> UInt64  {
    let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)

    let pathsFile = paths[0] + "/" + url!
    let fileUrl = URL(fileURLWithPath: pathsFile)

    let fileManager = FileManager.default
    do {
        let attributes = try fileManager.attributesOfItem(atPath: (fileUrl.path))
        var fileSize = attributes[FileAttributeKey.size] as! UInt64
        let dict = attributes as NSDictionary
        fileSize = dict.fileSize()
        return fileSize
    }
    catch let error as NSError {
        print("Something went wrong: \(error)")
        return 0
    }
}
...