Я пытаюсь сделать что-то подобное. В итоге я сделал это так:
length = CFReadStreamRead(stream, bytes, kAQDefaultBufSize);
// Save data
if (saveLocation){
NSFileHandle *mp3 = [NSFileHandle fileHandleForWritingAtPath:saveLocation];
[mp3 seekToEndOfFile];
[mp3 writeData:[NSData dataWithBytes:bytes length:length]];
[mp3 closeFile];
}
Некоторые проблемы, о которых следует знать. Вы должны убедиться, что файл в saveLocation существует. Я сделал новый инициализатор с mp3-адресом и путем saveLocation, и поставил там чек. Кроме того, имейте в виду, что если пользователь выполняет поиск в mp3, он этого не поймет. По сути, он будет записывать именно то, что воспроизводится. Он недостаточно умен, чтобы понять, что позиция воспроизведения сместилась. Однако, если вы просто запустите поток и дадите ему закончить весь mp3 (при условии, что у него есть конец), он должен сохраниться просто отлично.