我对swift很陌生,我的应用程序中有一个功能,它可以设置自动录音的时间表。录音可以在给定的时间成功地开始和停止。但是,当我点击"录音"按钮检查创建的录音文件时,我得到了一个运行时错误。
你知道为什么会这样吗?
我不认为这应该是一个问题,因为我只是自动化一个预先存在的功能。我最初有一个功能,成功地记录何时开始和停止按钮的功能是手动按下,文件是在文件夹"记录"中创建的
下面是我的代码:
/*
This will change recordings to fileitmes and add to an array, this array is used by the table view, which will then show the recordings
*/
func addToRecordings(folder: String) {
let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let path = documentsDirectory.appendingPathComponent(folder).absoluteURL
do {
let directoryContents = try FileManager.default.contentsOfDirectory(at: path, includingPropertiesForKeys: nil, options: [])
//only want the wav files
let wavFiles = directoryContents.filter{ $0.pathExtension == "wav" }
for file in wavFiles{
let fileName = file.lastPathComponent
let start = fileName.index(fileName.startIndex, offsetBy: 26)
let end = fileName.index(fileName.endIndex, offsetBy: -4)
let range = start..<end
//create id to help sort the wav files
let id = Int(fileName[range]) ?? 0
if let fileAttributes = try? FileManager.default.attributesOfItem(atPath: file.path) {
if let bytes = fileAttributes[.size] as? Int64 {
let fileSize = fileByteCountFormatter.string(fromByteCount: bytes)
let recording = FileItem(id: id, fileName: fileName, fileSizeSpecific: fileSize, fileSizeBytes: bytes, fileLocation: folder+fileName)
self.recordings.append(recording!)
}
}
}
self.recordings = self.recordings.sorted(by: {$0.id < $1.id})
self.tableView.reloadData()
} catch {
print(error)
}
if recordings.isEmpty{
recordingsActionButton.isHidden = true
self.selectAllButton.isHidden = true
progressBar.isHidden = true
}else {
recordingsActionButton.isHidden = false
self.selectAllButton.isHidden = false
}
}
错误在这里:第一个月
非常感谢您的到来!
1条答案
按热度按时间sg24os4d1#
如果
fileName
短于26个字符,则该行将给予超出边界的索引: