SWIFT:将数据从一个类传递到另一个类

SWIFT:将数据从一个类传递到另一个类,swift,segue,uistoryboardsegue,Swift,Segue,Uistoryboardsegue,所以我一直在使用prepareForSegue将数据从一个变量传递到另一个类。当我将数据传递给的变量与destinationViewController一起使用时,这一切都可以正常工作。但如果不是,会发生什么呢 示例:我正在从ViewController1移动到ViewController2,但我希望ViewController1中的数据转到“非ViewController”类,尽管我仍然希望转到VC2 有什么想法吗?谢谢大家! override func prepareForSegue(se

所以我一直在使用prepareForSegue将数据从一个变量传递到另一个类。当我将数据传递给的变量与destinationViewController一起使用时,这一切都可以正常工作。但如果不是,会发生什么呢

示例:我正在从ViewController1移动到ViewController2,但我希望ViewController1中的数据转到“非ViewController”类,尽管我仍然希望转到VC2

有什么想法吗?谢谢大家!

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "stopRecording") {
            //let playSoundsVC:PlaySoundsViewController = segue.destinationViewController as! PlaySoundsViewController
            let audioEffectsClass = AudioEffect()
            let data = sender as! RecordedAudio
            audioEffectsClass.receivedAudio = data
        }
    }
进口基础 进口AVF基金会

类音频效应{

let session = AVAudioSession.sharedInstance()
var audioEngine: AVAudioEngine!
var audioPlayerNode: AVAudioPlayerNode!
var audioFile: AVAudioFile!
var receivedAudio: RecordedAudio!
var changeEffect = AVAudioUnitTimePitch()


func create(){
    //output is through speakers

    do{
        try session.overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)
    } catch {print("Failed output audio through speakers.")}

    audioEngine = AVAudioEngine()

    audioPlayerNode = AVAudioPlayerNode()
    audioEngine.attachNode(audioPlayerNode)


}

func playAudio(){
    audioEngine.stop()
    audioEngine.reset()
    do {
        audioFile = try AVAudioFile(forReading: receivedAudio.filePathUrl)
    } catch {print("Failed to create file.")}

    audioPlayerNode.scheduleFile(audioFile, atTime: nil, completionHandler: nil)
    do {
        try audioEngine.start()
    } catch {}
    audioPlayerNode.play()

    audioEngine.attachNode(changeEffect)
    audioEngine.connect(audioPlayerNode, to: changeEffect, format: nil)
    audioEngine.connect(changeEffect, to: audioEngine.outputNode, format: nil)
}

func playAudioWithVariablePitch(pitch:Float) {
    changeEffect.pitch = pitch
    create()
    playAudio()
}

func playAudioWithVariableRate(rate: Float){
    changeEffect.rate = rate
    create()
    playAudio()

}

func stopAudio(){
    audioEngine.stop()
}

}

如果您有一个引用该类的变量,请创建一个方法来接收该类中的数据,并调用该方法并在
prepareforsgue
中传递数据。我希望我正确地理解您。。。但如果我没弄错的话,我不知道问题出在哪里?!?如果您将数据传递给一个子类UIViewcontroller类,或任何其他类,都是一样的?!?:-)

你有什么错误?或者,如果运行发布的代码会发生什么

也许这对你有帮助

class VCOne: UIViewController {

    lazy var audioEffect: AudioEffect = AudioEffect()

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "stopRecording") {
            if let recordedAudio: RecordedAudio = sender as? RecordedAudio {
                audioEffect.receivedAudio = recordedAudio
            }
        }
    }

}

class AudioEffect {
    var receivedAudio: RecordedAudio?
}

你能给我们一些代码吗?你能提供一个“其他类”的代码示例以及你打算如何使用它的描述吗?添加了代码。抱歉,没有提前添加。@Neo更新了代码。您希望看到什么?将对象
audioEffectsClass
创建为局部变量。if子句一结束,
audioEffectsClass
就会消失。