gpt4 book ai didi

ios - 在 NSUserDefaults 中存储类并在下一个 View 中访问

转载 作者:行者123 更新时间:2023-11-28 11:18:32 24 4
gpt4 key购买 nike

我创建了一个名为 UserDetails 的 swift 类,下面是结构:

import Foundation


class UserDetailsClass {
var fullname: String!
var mobile: String!
var email: String!
var password: String!
}

在我当前的 View controller 中,我创建了一个实例并将我想要移动到下一个 View 的值存储在实例变量中,如下所示:

var userDetailsInstance = UserDetailsClass()
userDetailsInstance.fullname = fullNameTextField.text
userDetailsInstance.mobile = mobileTextField.text
userDetailsInstance.email = emailTextField.text
userDetailsInstance.password = passwordTextField.text

var prefs = NSUserDefaults.standardUserDefaults()
prefs.setObject(userDetailsInstance, forKey: "currentGuest")
prefs.synchronize()

在下一个 View 中(有 segue 连接的地方,我尝试这样做:

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
var prefs = NSUserDefaults.standardUserDefaults()
var userDetailsClass: AnyObject? = prefs.valueForKey("currentGuest")

}

但应用程序立即崩溃。这里的目标是,在用户输入他/她的详细信息后,我不会将它们存储在服务器中,而是存储在 NSUserDefault 中,然后将它们带到下一个将进行 SMS 验证的 View 。验证完成后,我会将信息存储在服务器上。

错误控制台显示:

Attempt to insert non-property list object appName.UserDetailsClass for key currentGuest'

有没有比在 NSUserDefault 中存储对象更好的方法来移动数据?

我是 iOS 开发新手,感谢您的帮助。

最佳答案

无法将对象存储在 NSUserDefaults 中的原因是它不是属性列表类型(NSNumber、NSData、NSArray、NSDictionary、NSDate、String、Bool)。要将它存储在 NSUserDefaults 中,它必须是这些类型之一,以便您可以将它序列化为 NSData,但为了做到这一点,它需要是 NSCoding 兼容。

更好的解决方案是在prepareForSegue中传递对象

关于ios - 在 NSUserDefaults 中存储类并在下一个 View 中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30261185/

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