Я попытался преобразовать ALAsset в NSData в следующем коде:Как преобразовать ALAsset в NSData в Swift?
let assetUrl = NSURL(string: self.filename!)
ALAssetsLibrary().assetForURL(assetUrl,
resultBlock: { asset in
let rep = asset.defaultRepresentation()
var buffer: UInt8 = UInt8()
var error: NSError?
let from: Int64 = 0
let length: Int = Int(rep.size())
var buffered = rep.getBytes(&buffer, fromOffset: from, length: length, error: &error)
let data = NSData(bytesNoCopy: &buffered, length: length, freeWhenDone: true)
self.video = data
}, // # 1
failureBlock: { error in
println("ReportPhoto::loadVideoFromAssetsLibrary() - Error while loading saved video from AssetsLibrary!")
}
)
Но я получаю следующее сообщение об ошибке в консоли (на # 1 в коде):
object 0x27d02ce8: pointer being freed was not allocated
Я отследил объект, упомянутый в ошибке, и нашел его, но я не знаю, в чем проблема и как его решить!
Объекта является собственность внутри NSData
объекта называется _bytes
'getBytes: fromOffset: length: error:' возвращает количество записанных байтов. Итак, я думаю, что вы имели в виду 'let data = NSData (bytesNoCopy: & buffer, length: buffered, freeWhenDone: true)' – Larme
У вас была возможность проверить ответ? –
Извините за задержку. – malhobayyeb