- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将复杂数据存储到 UserDefaults 时,出现异常。代码如下。
写入变量c时发生异常。
struct MyData : Codable {
var v1 : Int
var v2 : Int
var v3 : Int
}
final class AllData : NSObject {
var a : Int = 0
var b = [String : Int]()
var c = [String : MyData]()
func loadSettings()
{
let userDefaults = UserDefaults.standard
if let v = userDefaults.object(forKey: “A”) as? Int {
self.a = v
}
if let v = userDefaults.object(forKey: “B”) as? [String : Int] {
self.b = v
}
guard let decodedNSData = userDefaults.object(forKey: “C”) as? NSData,
let v = (NSKeyedUnarchiver.unarchiveObject(with: decodedNSData as Data) as? [String : MyData]? )!
else {
print("Failed decoding level information")
return
}
self.c = v
}
func saveSettings()
{
let userDefaults = UserDefaults.standard
userDefaults.set(self.a, forKey: “A”)
userDefaults.set(self.b, forKey: “B”)
userDefaults.set(NSKeyedArchiver.archivedData(withRootObject: self.c), forKey: “C”)
userDefaults.synchronize()
}
有人可以让我知道我做错了什么吗?
谢谢
最佳答案
如果您的结构实现可编码,那么您最好使用 JSONEncoder 和 JSONDecoder
struct Language: Codable {
var name: String
var version: Int
}
let swift = Language(name: "Swift", version: 4)
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(swift) {
// save `encoded` somewhere
}
if let encoded = try? encoder.encode(swift) {
if let json = String(data: encoded, encoding: .utf8) {
print(json)
}
let decoder = JSONDecoder()
if let decoded = try? decoder.decode(Language.self, from: encoded) {
print(decoded.name)
}
关于ios - UserDefaults 编码失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47956050/
所以我正在创建一个附加对象的数组。我的问题是我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但是当我添加新对象时,旧对象消失了,并被旧对象取代。如何通过 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":
我是一名优秀的程序员,十分优秀!