- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
也许这与 this 是同一个问题。但我尝试过的解决方案中,很少有不起作用的。
模拟器不会在 Xcode 版本 9.0 beta 6 (9M214v) 上保存用户默认值。我也有 Xcode 8(连同 9)但删除了它。
我正在使用的代码:
UserDefaults.standard.setValue("1234567", forKey: "phone")
if let phone = UserDefaults.standard.value(forKey: "phone") as? String{
//some code here
}
另外我试过:
UserDefaults.standard.set("1234567", forKey: "phone")
if let phone = UserDefaults.standard.object(forKey: "phone") as? String{
//some code here
}
最佳答案
对于synchronize
的作用以及用户默认值的编写方式存在很多误解。在猜测事情如何运作之前,请务必检查 current maintainer's commentary关于它。他对事情很清楚。他的analogy to git也有点用处,请参阅他关于 iOS 8 的注释变化。对于这样一项古老的技术,NSUserDefaults 的变化比你想象的要多得多。
总而言之,在生产应用中几乎不需要调用 synchronize
。 (事实上 ,关于弃用和删除它的讨论反复出现。)正如文档所述:
Because this method is automatically invoked at periodic intervals, use this method only if you cannot wait for the automatic synchronization (for example, if your application is about to exit) or if you want to update the user defaults to what is on disk even though you have not made any changes.
即使是这些案例也大多与 macOS 相关。
For applications running on iOS 9.3 and later / macOS Sierra and later, -synchronize is not needed (or recommended) even in this situation [synchronizing between processes], since Key-Value Observation of defaults works between processes now, so the reading process can just watch directly for the value to change. As a result of that, applications running on those operating systems should generally never call synchronize.
但是......
人们在模拟器中使用用户默认设置时遇到的常见问题是,他们会在写入发生之前终止应用程序(点击停止、重新启动应用程序、崩溃)。在生产中,这通常不是问题。如果你在写入用户默认值的时候崩溃了,很可能你处于一个定义不明确的状态,所以无论你写的是垃圾,还是写的好,或者什么都没写,都是一种折腾-你喜欢什么。但是在开发过程中,程序终止总是会发生,这通常会导致用户默认值不写出。
现在一个似乎经常可行的解决方案是在各处散布 synchronize
。但在大多数情况下,这只会减慢您的代码速度。如果它有效,很好。但在我从事的大多数项目中,真正的解决方案只是在终止应用程序之前先喘口气。它不需要很多时间;只是不要在应用程序有机会写入您保存的内容之前终止该应用程序,然后重新启动以检查它是否已保存。
关于ios - Xcode 9 模拟器不保存 userdefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46526460/
所以我正在创建一个附加对象的数组。我的问题是我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但是当我添加新对象时,旧对象消失了,并被旧对象取代。如何通过 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":
我是一名优秀的程序员,十分优秀!