NSData выдает ошибку в версии 9.0

Ниже приведена моя функция, написанная на swift, этот код прекрасно работает в 10.0 версии iPhone, но выдает ошибку в 9.0, говоря

Сбой CFURLCopyResourcePropertyForKey, поскольку ему был передан URL-адрес без схемы. Не удалось загрузить: не удалось открыть файл "Recording2017-03-06_11.08.53000.mp3".

partFileURL будет иметь

/private/var/mobile/Containers/Data/Application/B8F9055D-D816-4E27-BA2A-B13F0EE97709/tmp/Recording2017-03-06_11.08.53000.mp3

Это моя нижняя функция:

//function
func putPartUplaod(partFileURL:URL , partFileNumber:Int)
{
        var partfileData:Data?
        var md5hash:Any?
        var sha256hash:Any?
        //  var error: NSError?   
        let uri:URL = NSURL(fileURLWithPath: partFileURL.absoluteString) as URL

        //Get MD5 Digest
        do{
            print(partFileURL)
            partfileData = try NSData(contentsOf: uri, options: NSData.ReadingOptions.dataReadingMapped) as Data    
            print("hello" , partfileData);
            md5hash = partfileData?.md5().base64EncodedString()  
        }catch let error as NSError {
            print("Failed to load: \(error.localizedDescription)")
        }
}

2 ответа

Решение

Вы можете использовать что-то вроде NSData *data = [[NSFileManager defaultManager] contentsAtPath:path]; Передаваемая вами строка не является допустимым URL-адресом, это просто путь к файлу. Для того, чтобы сделать его URL, вам нужно будет добавить схему, которая будет file://,

/private/var/mobile/Containers/Data/Application/B8F9055D-D816-4E27-BA2A-B13F0EE97709/tmp/Recording2017-03-06_11.08.53000.mp3это путь к файлу, а не URL. URL имеет схему (или протокол). Смотрите ваше сообщение об ошибке. Создайте свой URL с

URL(fileURLWithPath:"/private/var/mobile/Containers/Data/Application/B8F9055D-D816-4E27-BA2A-B13F0EE97709/tmp/Recording2017-03-06_11.08.53000.mp3")
Другие вопросы по тегам