2016-03-26 10 views
-1

Ich habe Udacitys Intro zu iOS App Entwicklung mit Swift Tutorial gefolgt, aber habe diesen Fehler.Wert des Typs 'PlaySoundsViewController' hat kein Mitglied 'recordedAudio'

Value of type 'PlaySoundsViewController' has no member 'recordedAudio' 

Zeile 84 hat den Fehler.

playSoundsVC.recordedAudio = recordedAudioURL 

Hier ist der gesamte Code:

import UIKit 
import AVFoundation 

class RecordSoundsViewController: UIViewController , AVAudioRecorderDelegate { 

@IBOutlet weak var recordingInProgress: UILabel! 
@IBOutlet weak var stopButton: UIButton! 
@IBOutlet weak var recordButton: UIButton! 

var audioRecorder:AVAudioRecorder! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func viewWillAppear(animated: Bool) { 
    //TODO: Hide stop button 
    stopButton.hidden = true 
    //TODO: Enable recordButton 
    recordButton.enabled = true 
} 

@IBAction func recordAudio(sender: AnyObject) { 
    //TODO: Show text "recording in progress" 
    recordingInProgress.hidden = false 
    //TODO: Show stopButton 
    stopButton.hidden = false 
    //TODO: Record the user's voice 
    print("in recordAudio") 
    //TODO: Disable recording button 
    recordButton.enabled = false 

    let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask, true)[0] as String 
    let recordingName = "recordedVoice.wav" 
    let pathArray = [dirPath, recordingName] 
    let filePath = NSURL.fileURLWithPathComponents(pathArray) 
    print(filePath) 

    let session = AVAudioSession.sharedInstance() 
    try! session.setCategory(AVAudioSessionCategoryPlayAndRecord) 

    try! audioRecorder = AVAudioRecorder(URL: filePath!, settings: [:]) 
    audioRecorder.meteringEnabled = true 
    audioRecorder.prepareToRecord() 
    audioRecorder.record() 
} 

@IBAction func stopRecording(sender: AnyObject) { 
    //TODO: hide recordingInProgress label 
    recordingInProgress.hidden = true 
    recordButton.enabled = true 
    let audioSession = AVAudioSession.sharedInstance() 
    try! audioSession.setActive(false) 
} 

func audioRecorderDidFinishRecording(recorder: AVAudioRecorder, successfully flag: Bool) { 
    print("AVAudioRecorder finished saving recording") 
    if (flag) { 
     self.performSegueWithIdentifier("stopRecording", sender: audioRecorder.url) 
    } else { 
     print("Saving of recording failed") 
    } 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "stopRecording") { 
     let playSoundsVC = segue.destinationViewController as! 
      PlaySoundsViewController 
     let recordedAudioURL = sender as! NSURL 
     playSoundsVC.recordedAudio = recordedAudioURL 
    } 
} 

}

Antwort

0
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "stopRecording") { 
     let playSoundsVC = segue.destinationViewController as! PlaySoundViewController 
     let recordedAudioURL = sender as! NSURL 
     playSoundsVC.recordedAudioURL = recordedAudioURL 
    } 
} 
0

add var recordedAudioURL: URL! zu Ihrer PlaySoundsViewController-Datei ist es eine Variable, die die URL in der nächsten Klasse enthält, die von der aktuellen Klasse gesendet wurde. Happy Coding :)

Verwandte Themen