Вот как я это сделал:
1) Найдите временный файл, который создает код SpeakHere, - найдите расширение .caf в классе SpeakHereController. Затем переместите этот временный файл в каталог вашего приложения с помощью чего-то вроде этого:
NSString *myFileName = @"MyName"; // this would probably come from a user text field
NSString *tempName = @"recordedFile.caf";
NSString *saveName = [NSString stringWithFormat:@"Documents/%@.caf", myFileName];
NSString *tempPath = [NSTemporaryDirectory() stringByAppendingPathComponent:tempName];
NSString *savePath = [NSHomeDirectory() stringByAppendingPathComponent:saveName];
2) Сохраните некоторые метаданные о файле, по крайней мере, его имя. Я помещаю это в NSUserDefaults так:
NSDictionary *recordingMetadata = [NSDictionary dictionaryWithObjectsAndKeys:
myFileName, @"name",
[NSDate date], @"date",
nil];
[self.savedRecordings addObject:recordingMetadata]; // savedRecordings is an array I created earlier by loading the NSUserDefaults
[[NSUserDefaults standardUserDefaults] setObject:self.savedRecordings forKey:@"recordings"]; // now I'm updating the NSUserDefaults
3) Теперь вы можете отобразить список сохраненных записей, просматривая self.savedRecordings.
4) Когда пользователь выбирает запись, вы можете легко инициализировать AVAudioPlayer с выбранным именем файла и воспроизводить его.
5) Чтобы позволить пользователям удалять записи, вы можете сделать что-то вроде этого:
NSString *myFileName = @"MyName";
// delete the audio file from the application directory
NSString *fileName = [NSString stringWithFormat:@"Documents/%@.caf", myFileName];
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:fileName];
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
// delete the metadata from the user preferences
for (int i=0; i<[self.savedRecordings count]; i++) {
NSDictionary *thisRecording = [self.savedRecordings objectAtIndex:i];
if ([myFileName isEqualToString:[thisRecording objectForKey:@"name"]]) {
[self.savedRecordings removeObjectAtIndex:i];
break;
}
}
[[NSUserDefaults standardUserDefaults] setObject:self.savedRecordings forKey:@"recordings"];
Обратите внимание, что если вы сохраните аудиофайлы в папке «Документы» и включите «Приложение поддерживает общий доступ к файлам iTunes» в своем файле info.plist, то пользователи смогут копировать свои записи из приложения и сохранять их на своих компьютерах ... a хорошая функция, если вы хотите предложить его.