У меня есть функция класса в моей собственной структуре Cocoapod:
public class FilesTools {
class func getSizeOfFile(_ path: String) -> UInt64? {
do {
let fileAttributes = try FileManager.default.attributesOfItem(atPath: path)
let fileSize = fileAttributes[.size]
guard let size = fileSize as? NSNumber else { return nil }
let int64Size = size.uint64Value
return int64Size
} catch {
print("error: \(error.localizedDescription)")
return nil
}
}
}
Затем я использую ее на симуляторе, все в порядке, но у меня ошибка на реальном устройстве.Я получаю сообщение об ошибке вида:
"error: Error Domain = NSCocoaErrorDomain Code = 257" Не удалось открыть файл «IMG_0001.JPG», так как у вас нет разрешения на его просмотр. "UserInfo = {NSFilePath = / var / mobile / Media / DCIM / 100APPLE / IMG_0001.JPG, NSUnderlyingError = 0x1c0842d00 {Ошибка домена = NSPOSIXErrorDomain Code = 1 «Операция не разрешена»}} "
Также еслиЯ вызываю этот метод из кода приложения, а не из кода фреймворка, он работает нормально.
Конечно, я запрашиваю разрешение у NSPhotoLibraryUsageDescription в моем файле plist.
Я получаю URL файла через такойфункция с использованием PHAsset:
asset.requestContentEditingInput(with: nil) { (input, info) in
guard let url = input?.fullSizeImageURL else {
return
}
...
FilesTools.getSizeOfFile(url.path)
...
}
Можно использовать методы FileManager или FileHandle с URL-адресами Photo Gallery из собственных фреймворков / библиотек или решить эту проблему?