首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关闭并重新打开应用后,UserDefaults不会保留保存的数据

答案: 当关闭并重新打开应用后,UserDefaults不会保留保存的数据,这是因为UserDefaults是基于内存存储的。当应用关闭时,内存中的数据会被释放,因此重新打开应用时,之前保存的数据就会丢失。

为了解决这个问题,可以考虑使用其他持久化存储方式来保存数据,例如:

  1. 文件存储:将数据保存到文件中,可以使用Property List或者自定义格式的文件进行存储。可以使用Foundation框架中的NSData、NSArray、NSDictionary等类来进行文件的读写操作。
  2. 数据库存储:使用数据库来进行数据的持久化存储,可以选择关系型数据库(如SQLite、MySQL)或者非关系型数据库(如MongoDB、Redis)。使用数据库可以提供更加灵活和高效的数据存取方式。
  3. Core Data:Core Data是iOS和Mac OS X平台上的一个对象图管理和持久化框架,它提供了一种数据模型和数据存储的机制。可以通过定义实体、属性和关系来管理数据,并可以选择不同的存储类型(如SQLite、XML)来进行持久化存储。
  4. Keychain:Keychain是苹果提供的一种安全的数据存储方式,可以用于保存敏感信息(如密码、令牌等)。可以使用Security.framework框架中的API来进行Keychain的读写操作。

对于腾讯云相关产品和产品介绍链接地址,由于不提及云计算品牌商,无法提供具体的产品和链接地址。但是腾讯云提供了丰富的云计算服务,可以参考腾讯云官方网站获取相关信息。

总结:关闭并重新打开应用后,UserDefaults无法保留保存的数据。为了实现数据的持久化存储,可以选择文件存储、数据库存储、Core Data或者Keychain等方式来存储数据,并根据实际需求选择合适的方式进行数据的读写操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据

object types)作为值•使用类似的读取和写入方法•都是率先将数据保存在内存中,系统会择机对内存数据进行持久化(此过程开发者通常无需干预) 即使你没有使用过 UserDefaults,只需花几分钟阅读一下...对于不返回可选值类型,避免使用简便方法来获取值。...有更多限制苹果并不推荐使用 NSUbiquitousKeyValueStore 保存数据量大、变化频繁且对 app 运行至关重要数据。...iCloud 账户、无网络后重新连接等状况下数据完整性。...但在个别情况下仍会出现数据不更新,设备之间不同步情况,例如:当 app 在正常运行过程中,用户在系统设置中选择关闭 app iCloud 同步。

4.9K40

实时切换 Core Data 云同步状态

,然后将数据转换成 CloudKit 对应格式,保存在 SQLite 上特定表中( ANSCKEXPORT......由于应用中所有的数据操作仅在 NSPersistentContainer 上进行,因此在运行中实时切换同步状态并不会数据安全性和稳定性造成影响。...会在重启后( 在应用运行中进行如上操作,iOS 应用会自动重启 )对所有的与账户关联数据在设备上进行清除( 并不会清除云端数据,当账户恢复或开启同步功能后仍可同步回本地 )。...该清除操作属于一种预设行为,是正常现象。某些系统应用提供了在 iCloud 账户退出后保留本地数据能力。但 NSPersistentCloudKitContainer 默认并不提供保留数据设计。...删除操作是以上文中提到网络同步模块中保存数据同步日志为依据进行

1.5K20

@AppStorage研究

UserDefaults是一种高效且轻量持久化方案,它有以下不足: 数据不安全 它数据相对容易提取,所以不要保存和隐私有关重要数据 持久化时机不确定 为了效率考量,UserDefaults数据在发生变化时并不会立即持久化...,系统会在认为合适时机才将数据保存在硬盘中。...尽量不要在其中保存会影响App执行完整性关键数据,在出现数据丢失状况下,App仍可根据默认值正常运行 尽管@AppStorage是作为UserDefaults属性包装器存在,但@AppStorage...鉴于SwiftUI刷新机制,我们必须要在集中声明、单独注入后仍需保留@AppStorageDynamicProperty特征——当UserDefaults值发生变动时刷新视图。...我并不打算将配置数据汇总到一个结构体中通过支持RawRepresentable协议统一保存

1.4K20

Swift 中 User Defaults 读取和写入

介绍 User Defaults 应用程序通常使用 User Defaults 来存储用户首选项。你可以存储首选项,例如用户最喜欢股票或保存特定用户状态,例如“用户已看到引导”。...你可以通过单击执行按钮选择 User Defaults plist 文件来打开编辑器。...与此同时,我可以使用开关重置该值,使用 RocketSim 重新启动应用程序,以查看工具提示是否再次显示。 你可以想象这大大加快了测试依赖于 User Defaults 实施工作流程。...最好是你可以免费开始使用标准套件测试编辑器,只需从 Mac App Store 安装 RocketSim 即可。...Keychain 用于安全性 User Defaults 不足以存储敏感数据。用户凭据、API 密钥或其他敏感数据存储在钥匙串中。

26720

iOS 数据持久化 - Sandbox

Documents 该目录内容可以通过文件共享提供给用户,因此,该目录仅包含您可能希望向用户公开文件。使用此目录来存储用户生成内容,如用户自己创建文件或者下载音视频等数据文件。...Library/Caches 保存应用运行时生成需要持久化数据,一般存储体积大、不需要备份非重要数据,如网络请求音视频与图片等缓存。...在 iOS 5.0 及以后版本中,Caches 当系统磁盘空间非常低时,系统可能会在极少数情况下该删除目录(APP 正在运行时不会发生),所以尽量保证该路径文件在 APP 在重新运行时可以得到重新创建...iTunes、iCloud 不会备份该目录。 Library/Preference 保存应用所有偏好设置。...如果看过上篇文章,应该就会记得UserDefaults生成plist文件就会保存该目录下。 iTunes、iCloud 会备份该目录。

1.1K10

Ask Apple 2022 中与 Core Data 有关问答 (下)

主程序与扩展程序数据同步Q:我有一个主应用程序和一个扩展程序,它们都读取相同 Core Data 数据库。但是,当我在主应用程序中进行更改时,我扩展程序在重新启动之前不会看到更改。...还是只使用一个 fetchRequest,然后将数据保存在本地,通过上述方法访问它( 应该是指第一种方式 )?我想知道这里最佳做法是什么。谢谢!A:一般来说,不同视图经常使用不同获取请求。...我注意到,当我使用 Safari 客户端从 CloudKit 数据库中删除一条记录时( 通过 CloudKit Dashboard ),该对象仍会保留在设备上 Core Data 数据存储中。...如果你重新启动应用程序,应该会看到更改。如何确定是否已同步完成Q:我正在使用 NSPersistentCloudKitContainer,想改善设备初次从 iCloud 上下载数据用户体验。...我数据模型中有一个 Int16 类型 userOrder 属性,在表视图行被重新排序后,有什么好方法来保存数据新顺序?

3.2K20

开关组件对比

大部分情况下开发时候,是用UserDefaults存储一个bool值,用于判断。...这种情况下,做法是启动时候调用服务端接口,在返回接口数据中存储对应值,使用时直接获取存储值。...}) // 使用时 // 获取存储值,用于判断 对比 而在09|开关组件:如何使用功能开关,支持产品快速迭代中,作者把开关组件分为了三类:编译时开关、本地开关和远程开关 编译时开关:让编译器通过检查编译条件来启动后者关闭一些功能...本地开关:让用户在App里面手动启动或者关闭一些功能。 远程开关:让产品经理远程遥控App来启动或者关闭一些功能。...通过Swift protocol定义了ToggleType和TogglesDataStoreType两个协议,定义两个方法,判断开关是否打开、以及更新开关状态 // TogglesDataStoreType.swift

94311

应用程序内购买教程:入门

单击保存。大!您已经创建了第一个IAP产品。 ? 本地化 注意:App Store Connect可能会抱怨您缺少IAP数据。在您提交应用以供审核之前,您需要在此页面底部添加IAP屏幕截图。...它接收一个SKProduct对象数组并将它们传递给先前保存完成处理程序。处理程序使用新数据重新加载表。如果出现问题,request(_:didFailWithError:)则调用。...purchasedProductIdentifiers 使用保存UserDefaults。...如果交易已完成或已恢复,则会将其添加到购买集并将标识符保存在其中UserDefaults。它还会在该事务中发布通知,以便应用程序中任何感兴趣对象都可以监听它以执行更新用户界面等操作。...打开IAPHelper.swift滚动到文件底部。

5.4K20

iOS开发之WidgetKit补充

要实现一个 Widget,需要给应用添加一个 Widget 扩展只能使用 SwiftUI 来实现 Widget 内容。...实现 配置完成以后,可以通过UserDefaults或FileManager来实现 App 与 Widget 数据共享,这里以UserDefaults为例,因为 SwiftUI 提供了@AppStorage...")) // 然后在后面保存数据 Widget @AppStorage("contact", store: UserDefaults(suiteName: "group.cn.abc.yf.SwiftUI-Widget...Widget 刷新时间由系统统一决定(有时候设置了也不会自己刷新),如果需要强制刷新 Widget,可以在 App 中使用 WidgetCenter 来重新加载所有时间线:WidgetCenter.shared.reloadAllTimelines...Widget 本质:一个随着时间线而更新 SwiftUI View。 运行 先运行 App 再运行 Widget 交互 只能点击,点击会打开 App。

1.9K30

IOS开发之记录用户登陆状态

上一篇博客中提到了用CoreData来进行数据持久化,CoreData配置和使用步骤还是挺复杂。但熟悉CoreData使用流程后,CoreData还是蛮好用。...今天要说是如何记录我们用户登陆状态。例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了。那么我们在App开发中如何记录用户登陆状态呢?...CoreData适合处理大量数据,一般和TableView来结合起来使用,当然我们可以用CoreData来存储用户登陆信息,但这不免有点大材小用,而且用起来也是比较复杂。...在退出按钮回调方法中,我们需要把之前保存用户信息进行remove掉,同时用模态方式来跳转到登陆页面,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...= [NSUserDefaults standardUserDefaults];           //移除UserDefaults中存储用户信息     [userDefaults removeObjectForKey

1.5K90

Windows10系统变慢,用上这19招,电脑性能大幅度提升!

本文目录 关闭启动时自动运行程序 启动时禁用重新启动应用程序 禁用后台应用 卸载非必要应用程序 只安装高质量应用程序 回收硬盘空间 运行碎片整理工具 启用ReadyBoost 检查计算机是否存在恶意软件...如果启用了在启动时重新启动应用程序,则可以使用以下方法将其关闭打开设置。 点击帐户。 单击登录选项。...在“隐私”部分下,关闭“更新或重启后,使用我登录信息自动完成设备设置并重新打开应用”选项后重新打开应用程序。...14.增加页面文件大小 “页面文件”是Windows 10用作内存硬盘驱动器上隐藏文件,充当系统内存溢出,用于保存当前计算机上运行应用程序所需数据。 ?...注意,使用还原点不会删除你文件,但它会删除在创建还原点后安装系统更改、更新、驱动程序和应用程序。 默认情况下禁用“系统还原”,因此必须先启用系统还原功能。

12.4K30

Swift 单元测试入门

let cache = SearchQueryCache(userDefaults: userDefaults) /// ... write the test } } 这样做可以确保您不会操纵在模拟器上测试期间使用标准用户默认值...根据最新测试运行结果,同一方块显示红色或绿色。 重新运行最新测试 使用以下命令重新运行上次运行测试: ⌃ Control + ⌥ Option + ⌘ Command + G....上面的快捷方式可能是我最常用快捷方式之一,因为它可以帮助我在对失败测试实施修复后快速重新运行测试。...就像编写应用程序代码一样,您应该尽最大努力编写高质量测试代码。 考虑重用代码、使用协议、在多个测试中使用时定义属性,确保您测试清理所有创建数据。...这个窗口可以通过Product ➞ Scheme ➞ Edit Scheme打开。 在修复错误之前编写测试 跳到一个错误上尽快修复它是很诱人

2.7K40

干货 | 携程机票iOS Widget实践

但是在实际应用场景中,仍然会有和Containing App通信需求,这里系统给出方案是在两者之间使用共有存储来解决数据通信问题,App Extension需要打开Containing App 附带一些参数...Xcode12不再提供Today Extension添加,对于已有Today ExtensionApp,系统仍然在负一屏保留区域展示,并且不能像Widget一样随意拖动移动位置和删除等操作,仅保留最初规则...系统通过ProvidergetTimeline来做数据刷新操作回调,开发者在此方法中将获取数据提交封装成TimelineEntry,加上Timeline刷新策略提交给系统,最终实现刷新。...点击WidgetWidget和Link方式,只能打开主Containing App,即使URL维护是其他AppSchema,也是无法打开其他App。...• 系统为了减负,在这个基础上做了一层机器学习,实际刷新会根据用户手机上小组件可见频率时间、上次重新加载时间以及主app活动状态做动态分配。

1.3K10

Mac OSX 开发入门基础系列之NSTask

Task(图片来自网络) 利用NSTask,我们可以在应用中调用外部程序或脚本获得它<执行状态和结果 NSTask最为常用一个场景是为命令行操作提供图形化界面 1....NSTask 使用 我们通过创建一个简单克隆Git仓库工程来熟悉NSTask使用 如果你比较捉急,可以提前从这里下载NSTaskDemo 3.1 创建工程(本示例使用Swift,默认你已经熟悉基本...OSX UI开发),设置好UI界面,效果如下: UI界面 3.2 打开ViewController.swift,设置控件连线属性以及方法:...保存用户选择路径(为了获取访问权限) UserDefaults.standard.setValue(openPanel.url?....系统中 ,沙盒有个规则:在App运行期间通过NSOpenPanel用户手动打开任意位置文件,把这个这个路径保存下来,后面都是可以直接用这个路径继续访问文件,但当App退出后再次运行,这个路径默认是不可以访问

2.2K40

【说站】win10系统打开网页不是私密连接怎么解决?

2、“ 日期和时间”窗口打开后,单击“ 更改日期和时间”按钮。 3、输入正确日期和时间保存更改。 4、调整日期和时间后,检查问题是否解决。...2、当“设置”选项卡打开时,一直向下滚动单击“显示高级设置”。 3、在“隐私”部分中,单击“清除浏览数据”按钮。 4、在“从以下菜单中清除以下项目”中,选择时间开始。...检查浏览历史记录,Cookie,缓存图像和文件以及托管应用程序数据。现在,单击“清除浏览数据”按钮。 5、在Chrome删除所选数据重新启动浏览器时,请稍候。...2、当“网络和共享中心”打开时,单击左窗格中“更改高级共享设置”。 3、现在将显示“高级共享设置”窗口。关闭网络发现,文件和打印机共享以及公用文件夹共享。打开密码保护共享。点击保存更改按钮。...为此,请按照下列步骤操作: 1、按Windows键+ I打开“设置”应用程序。 2、打开“设置”应用后,转到“网络和Internet”部分。 3、从左侧菜单中选择代理选项卡。

10.4K20

探索 App Clips

主标题下方有几行小字,可以选择是否开启通知、定位等权限,这些权限都是临时性或受限制,可以点击蓝字进去将权限关闭,否则默认权限是打开。...如果调起App Clips时手机处于锁屏状态,在卡片页不会开启后台下载,当用户点击Open后才会开始下载展示loading页面。...下载后App Clips,三十天内未使用则会被删除二进制,下次使用将重新下载。这个卡片页无论是否安装App都会显示,区别在于打开是主App还是App Clips。...不同target或应用间访问沙盒很简单,可以通过NSUserDefaults传入对应group方式创建userDefaults对象,可以对key、value进行操作。...通知也是一样,不需要向用户申请授权,可以请求“部分授权”,选项也是默认打开,在卡片页可以关闭

1.8K20

iOS学习——iOS常用存储方式

, YES).firstObject; NSLog(@"%@", path); Library/Caches: iTunes不会同步此文件夹,适合存储体积大,不需要备份非重要数据。...tmp:iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下文件,所以此目录适合保存应用中一些临时文件,用完就删除。...注意 偏好设置是专门用来保存应用程序配置信息,一般不要在偏好设置中保存其他数据。 如果没有调用synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。...注意 必须遵循实现NSCoding协议 保存文件扩展名可以任意指定 继承时必须先调用父类归档解档方法 扩展:iOS开发基础-数据存储方式(归档) 2.4 手动存放沙盒 手动将数据存放到沙盒...,其实就是自己在沙盒某一个指定路径(第一部分介绍了沙盒各目录路径获取方式)下新建一个保存数据文件(.txt、.plist、.data等格式文件),然后向其中写我们需要保存数据即可。

2.9K100
领券