2016-08-16 4 views
0

Я работаю на iPad iOS 9.3.4 (последняя версия на момент написания этой статьи).Невозможно записать на iPad: Ошибка Домен = NSOSStatusErrorDomain Code = 1718449215 "(null)"

Я бегу этот код:

let settings = [ 
     AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC), 
     AVSampleRateKey: 44100.0, 
     AVNumberOfChannelsKey: 2 as NSNumber, 
     AVEncoderAudioQualityKey: AVAudioQuality.High.rawValue 
    ] 


do { 
    audioRecorder = try AVAudioRecorder(URL: audioURL, settings: settings) 
    audioRecorder.delegate = self 
    audioRecorder.record() 

} catch let error as NSError{ 
    print(error.description) 
} 

Я поймать эту ошибку:

Error Domain=NSOSStatusErrorDomain Code=1718449215 "(null)"

Когда я пытаюсь использовать AVAudioRecorder с Objective-C - Я могу записать без проблем. Проблема, похоже, происходит только с Swift и только на устройстве - никаких проблем в симуляторе.

Если я выключу kAudioFormatMPEG4AAC с kAudioFormatLinearPCM, я могу записать - но когда я пытаюсь воспроизвести запись, ничего не играет - кажется, что она плохо записана.

Кто-нибудь смог записать с AVAudioRecorder в Swift в последнее время и воспроизвести запись на реальном iPad? Я хотел бы просто иметь этот код.

+0

Смотрите, если это поможет вам: - http://stackoverflow.com/a/4259355/988169 – pkc456

+0

Спасибо - я видел, что - но это не ответ на мой вопрос. – etayluz

ответ

0

Похоже, я никогда не устанавливал сеанс записи как активный. Я хочу, чтобы описание ошибки было лучше.

override init() { 
    super.init() 

    recordingSession = AVAudioSession.sharedInstance() 

    do { 
     try recordingSession.setCategory(AVAudioSessionCategoryPlayAndRecord) 
     try recordingSession.setActive(true) 
     recordingSession.requestRecordPermission() { (allowed: Bool) -> Void in 
     dispatch_async(dispatch_get_main_queue()) { 
      if allowed { 
      // success 
      } else { 
      // TBD: Show a message to the user that they need to give permission in settings app to proceed 
      } 
     } 
     } 
    } catch { 
     // TBD: Show a message to the user that they need to give permission in settings app to proceed 
    } 
    }