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