[英]Data disappears after being sent with segue using Swift
I am doing something very wrong, but I don't understand what. 我做错了什么,但我不明白。 So I sending my String like this:
所以我像这样发送我的字符串:
var someString = "My String"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "MyCustomIdentifier") {
let vc = segue.destinationViewController as! MySecondViewController
vc.someString = someString
}
}
And MySecondViewController gets the value of someString: 然后MySecondViewController获得someString的值:
var someString = String()
override func viewDidLoad() {
super.viewDidLoad()
print(someString) //Prints String as expected, all good
}
But then when I need it to access in imagePickerController: 但是然后当我需要它来访问imagePickerController时:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
print(someString) //Nothing is printed, there is no value in someString
}
What's happening here? 这里发生了什么事? I need that string value in
imagePickerController
, because I will be sending chosen image using Alamofire and that string is my header. 我需要
imagePickerController
中的字符串值,因为我将使用Alamofire发送选择的图像,并且该字符串是我的标头。
EDIT: Found the problem - I was getting my someString
value from server at the same time as prepareForSegue
was getting called. 编辑:发现了问题-我正在从
prepareForSegue
被调用的同时从服务器获取我的someString
值。
Strings are value types in swift, therefore the second ViewController creates a brand new instance. 字符串是快速的值类型,因此第二个ViewController创建了一个全新的实例。 Need to pass a reference, so try declare it in 2nd ViewController as an optional :
需要传递一个引用,因此请尝试在第二个ViewController中将其声明为可选的:
var someString : String!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.