gpt4 book ai didi

ios - 无法转换值问题 Swift iOS

转载 作者:行者123 更新时间:2023-11-30 14:10:43 24 4
gpt4 key购买 nike

我有一个应用程序,我要求用户首先登录。成功登录后,我希望用户名跟随应用程序中的所有其他 View Controller 。我尝试将其声明为公共(public)变量,但我不确定如何正确执行此操作(即它在任何情况下都不起作用),因此我现在正在尝试prepareForSegue 方法。但是,当我这样做时,我得到一个 “无法将类型'SwiftLoginScreen.LoginVC'(0x10cdd33a0)的值转换为'SwiftLoginScreen.ActionVC'(0x10cdd3130)。(lldb)” - 错误。

我希望能够从应用程序中的任何和所有 View Controller 调用用户名,但我无法解决这个问题。我从 HomeVC 获得了用户名,现在希望将其传递到我的 ActionVC。

家庭风险投资:

import UIKit

class HomeVC: UIViewController {

@IBOutlet var usernameLabel : UILabel!
var currentUser : NSString!

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

override func viewDidAppear(animated: Bool) {
super.viewDidAppear(true)

let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
let isLoggedIn:Int = prefs.integerForKey("ISLOGGEDIN") as Int
if (isLoggedIn != 1) {
self.performSegueWithIdentifier("goto_login", sender: self)
} else {
self.usernameLabel.text = prefs.valueForKey("USERNAME") as? String
currentUser = prefs.valueForKey("USERNAME") as? String
}
}

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

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

let destinationVC = segue.destinationViewController as! ActionVC
destinationVC.operatingUser = self.currentUser;

}

@IBAction func gotoAction(sender : UIButton) {

let appDomain = NSBundle.mainBundle().bundleIdentifier
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain!)

self.performSegueWithIdentifier("goto_action", sender: self)

}

}

行动风险投资:

import Foundation
import UIKit

class ActionVC : UIViewController, UIImagePickerControllerDelegate{

@IBOutlet var usernameLable : UILabel!

var operatingUser : NSString!

override func viewDidLoad() {
super.viewDidLoad()
self.usernameLable.text = operatingUser as? String

}

最佳答案

prepareForSegue 将为涉及 View Controller 的所有 Segue 调用。在您的情况下,它被调用用于一个 segue,其中目标 View Controller 是 LoginVC 的实例,但您强制向下转换 (as!) 到 ActionVC - 所以你在运行时会遇到异常。

您可以使用可选绑定(bind)来确保您正在处理正确的转场 -

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {      

if let destinationVC = segue.destinationViewController as? ActionVC {
destinationVC.operatingUser = self.currentUser;
}

}

关于ios - 无法转换值问题 Swift iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31807495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com