AVAudioPlayer 在某些本地 MP3 文件上出现以下错误:
Error Domain=NSOSStatusErrorDomain Code=-54 "(null)"
我正在将 zip 文件下载到 Documents 目录,然后使用名为的库解压缩SSZip存档.
在 Documents 目录中,将创建一个文件夹来包含解压缩的文件。
我能够毫无问题地播放整张专辑。
一切都很顺利,直到我开始下载某些文件。
我寻找过类似的问题(osx),可能指出这是一个权限错误,但我还没有设法让它工作。
有谁知道这个错误是什么?
它似乎也没有出现在任何文档中。
Ex.
let fileManager = NSFileManager.defaultManager()
var docDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
func showContentsOfSubDirectories() {
do {
let files = try fileManager.contentsOfDirectoryAtPath(docDirectory)
print("----")
for file in files {
print("> \(file)")
do {
var rsrc: AnyObject?
let possibleDir = NSURL(fileURLWithPath: docDirectory + "/" + file)
try possibleDir.getResourceValue(&rsrc, forKey: NSURLIsDirectoryKey)
if let isDirectory = rsrc as? NSNumber {
if Bool(isDirectory) {
let subFiles = try fileManager.contentsOfDirectoryAtPath(docDirectory + "/" + file)
for subFile in subFiles {
print(" >> \(subFile)")
}
}
}
} catch let error as NSError {
print(error)
}
}
print("----")
} catch let error as NSError {
print(error)
}
}
我使用上面的代码来检查目录。
这会给我调试:
专辑名称
歌曲1.mp3
歌曲2.mp3
歌曲3.mp3
歌曲4.mp3
所以它存在。
let filePath = docDirectory + "/" + ALBUM_NAME + "/SONG1.mp3"
// ~/Library/Developer/CoreSimulator/Devices/XXX/data/Containers/Data/Application/XXX/
// Same issue happens on actual device too
do {
try player = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: filePath!))
} catch let error as NSError {
}
这对某些人有效,但对另一些人无效。