- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个虚拟 IOS 应用程序来很好地解释我的问题。让我分享所有细节:
UserDetail.swift 文件
import Foundation
class UserDetail {
var accountIsDeleted = false
var userGUID : String?
var userAge: Int?
}
LoginPageViewController.swift文件
import UIKit
class LoginPageViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func loginButtonPressed(_ sender: UIButton) {
var oUserDetail = UserDetail()
oUserDetail.accountIsDeleted = true
oUserDetail.userAge = 38
oUserDetail.userName = "Dirk Kuyt"
UserDefaults.standard.set(oUserDetail, forKey: "UserCredentialUserDefaults")
UserDefaults.standard.synchronize()
performSegue(withIdentifier: "LoginPage2Homepage", sender: nil)
}
}
HomepageViewController.swift文件
import UIKit
class HomepageViewController: UIViewController {
var result_userGUID = ""
var result_userAge = 0
var result_isDeleted = false
@IBOutlet weak var labelUserGuidOutlet: UILabel!
@IBOutlet weak var labelAgeOutlet: UILabel!
@IBOutlet weak var labelAccountIsDeletedOutlet: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.setVariablesFromUserDefault()
labelUserGuidOutlet.text = result_userGUID
labelAgeOutlet.text = String(result_userAge)
labelAccountIsDeletedOutlet.text = String(result_isDeleted)
}
func setVariablesFromUserDefault()
{
if UserDefaults.standard.object(forKey: "UserCredentialUserDefaults") != nil
{
// I need a help in this scope
// I have checked already: My UserDefault exists or not.
// I need to check type of the value in UserDefault if UserDefault is exists. I need to show print if type of the value in UserDefault is not belongs to my custom class.
// And then i need to cast UserDefault to reach my custom class's properties: userGUID, userAge, isDeleted
}
else
{
print("there is no userDefault which is named UserCredentialUserDefaults")
}
}
}
我的目的:
oUserDetail
) 存储在 LoginPageViewController 的 UserDefaults 中,并带有登录按钮单击操作。result_userGUID
、result_userAge
、result_isDeleted
以在标签中显示它们。在登录页面中单击登录按钮后出现错误。我不能将自定义类存储在 UserDefaults 中吗?我需要能够存储,因为我在编写时看到了这个细节:
UserDefaults.standart.set(value: Any?, forKey: String)
我的自定义类在上面的 Any
范围内。不是吗?
最佳答案
如果不符合 NSCoding
/Codable
协议(protocol),就不能存储类实例
class UserDetail : Codable {
var accountIsDeleted:Bool? // you can remove this as it's useless if the you read a nil content from user defaults that means no current account
var userGUID : String?
var userAge: Int?
}
商店
do {
let res = try JSONEncoder().encode(yourClassInstance)
UserDefaults.standard.set(value:res,forKey: "somekey")
}
catch { print(error) }
检索
do {
if let data = UserDefaults.standard.data(forKey:"somekey") {
let res = try JSONDecoder().decode(UserDetail.self,from:data)
} else {
print("No account")
}
}
catch { print(error) }
关于ios - 将我的自定义类存储在 UserDefaults 中,并转换(解析)此 UserDefault 以达到值(Swift 4.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55198256/
所以我正在创建一个附加对象的数组。我的问题是我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但是当我添加新对象时,旧对象消失了,并被旧对象取代。如何通过 NSUserDefaults
Swift 3.0 中 UserDefaults() 和 UserDefaults.standard 有区别吗? 最佳答案 UserDefaults - 为您提供一个新对象,每个对象都分配不同的内存并
当我打印 .text 属性 print(inputField.text!) 时,它会打印 0.0925,这就是我输入的内容。但是当我将其传递给 UserDefault 或变量时, defaults.s
我创建了一个虚拟 IOS 应用程序来很好地解释我的问题。让我分享所有细节: 这个虚拟 IOS 应用程序中有 2 个页面:LoginPageViewController.swift 和 Homepage
我的对象符合新的 Swift 4 Codeable协议(protocol)。如何在 UserDefaults 中保存这些对象的数组? struct MyObject: Codeable { v
是什么导致这种情况发生?此错误的两个实例出现在我的 View Controller 的最底部,其中行以“userDefaults”开头。这是我的代码 import UIKit class Second
我正在呈现一个带有一些文本字段和按钮的 View ,用户可以在该文本字段中输入一些数据,当用户单击保存按钮时,该数据将保存在 NSUserdefaults 中并显示在另一个 View 上,但它不起作用
将复杂数据存储到 UserDefaults 时,出现异常。代码如下。 写入变量c时发生异常。 struct MyData : Codable { var v1 : Int var v2 : I
我有一个 UIProgress View ,需要 60 秒才能穿过屏幕,但是我如何使它的位置而不是设置时间“var秒= 60”,我有 UserDefault 字符串作为时间? (并未包含所有代码。)
我有应用程序+扩展,并且我制作了这样的共享存储 extension UserDefaults { static let suiteName = "group.myApp" static
我试图将自定义类数组保存到 UserDefaults,但它不起作用。我在 if let 上没有得到任何返回。我在网上到处找。我使用的是 Swift 4.2 extension UserDefaults
我的要求是用户必须导航上次访问的页面,因此 我试图将UIViewController数组保存到NSUserDefault,但应用程序每次都会崩溃 let array = self.navigation
我正在我的应用中实现备份功能。因此,我正在备份所有 UserDefaults 都保存在以下路径的 UserDefaults 源文件: .../Library/Preferences/.plist 当用
我希望将精心制作的多级自定义对象保存到 NSUserDefaults 中。我的自定义类设置如下: 讲师 @property (strong, nonatomic) NSString *instruct
我正在手动将数据输入结构。但是该结构不保存数据。我尝试使用 userdefaults 但它不起作用。如果数据位于结构 bad 中,我希望数据始终显示在标签 benCarson 上。 View Cont
我想我正在尝试制作的 iOS 应用程序的某些部分存在概念问题。基本上,在此应用程序中,您将一个项目添加到列表中,该项目将在 1 小时后过期。所以你有一个小时的时间来使用它。但是,我希望在应用程序崩溃或
因此,当用户首次打开我的应用程序时,他们将看到一个带有按钮的 View ,用于继续登录或注册。在我的登录 View 中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时调用它。尽管我使用 U
将计数用户默认值重置为来自扩展方法之外的函数。在这种情况下,它的功能很简单。现在代码从 0 开始,除非我可以使用 func 来阻止代码上升。 extension UIViewController {
我目前遇到的一个问题是,如果我离开应用程序并返回,recordData 值不会保持保存状态。如果我在不关闭应用程序的情况下再次玩游戏,它仍会保存。 如果我关闭并重新打开应用程序,ant new sco
在 Swift 中创建了一个像这样的 Array var MyArray: [String:[String:[Int]]] = [ "xx": ["x1": [1, 2, 3], "x2":
我是一名优秀的程序员,十分优秀!