我用AVFoundation录制音频并将文件保存在DocumentDirectory中。然后在核心数据中,"声音" entity将url存储为字符串。一切都很好。但是我想知道:当从Core Data中删除声音实体时,如何从DocumentDirectory中删除文件......或者是否自动发生?
我保存到磁盘的代码:
let directoryURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).first
let audioFileName = NSUUID().UUIDString + ".m4a"
let audioFileURL = directoryURL!.URLByAppendingPathComponent(audioFileName)
// URL for Core Data store
audioURL = audioFileName
// Setup audio session
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker)
} catch _ {
print("Error creating AVAudioSession")
}
let recordSettings = [AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC), AVSampleRateKey: 44100.0, AVNumberOfChannelsKey: 2]
// Initiate and prepare recorder
audioRecorder = try?AVAudioRecorder(URL: audioFileURL!, settings: recordSettings)
audioRecorder?.delegate = self
audioRecorder?.meteringEnabled = true
audioRecorder?.prepareToRecord()
非常感谢您的帮助!对不起,我发现在SIM卡中跟踪文档目录中的文件有点困难。 (我在Swift 2.3中)
答案 0 :(得分:0)
删除核心数据实例最多会影响核心数据存储中的内容。 Core Data不知道您保存的字符串指向文件,因此它不会尝试对字符串执行任何特殊操作。
您可以使用removeItemAtURL:error:
上的NSFileManager
方法删除该文件。执行此操作的好地方是在托管对象子类中 - 覆盖prepareForDeletion
并删除该文件。