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

Swift 中 User Defaults 的读取和写入

前言 User Defaults 是 Swift 应用程序存储应用启动之间保持的首选项的首选解决方案。它是由属性列表(plist)文件支持的键-值存储。...共享 User Defaults 与其他应用程序和扩展共享 User Defaults 使用所谓的应用组,你可以与其他应用程序和扩展共享 User Defaults 容器。...我强烈建议从一开始就使用这种技术,即使现在可能没有共享首选项的需要,但如果你添加需要从主应用程序中读取或写入首选项的扩展,以后你会感谢自己的。...要配置应用组,你需要向项目设置中添加一个新的功能: 你可以通过添加应用组功能来开始与其他应用程序和扩展共享 User Defaults。 你可以苹果的文档中找到详细的说明。...结论 你可以使用 User Defaults 存储首选项并在应用启动之间捕获状态。应用组非常适合与其他应用程序和扩展共享首选项,你需要密切关注可以存储的数据类型。

23920
您找到你想要的搜索结果了吗?
是的
没有找到

iOS14开发-数据存储

// 获取程序的Home目录 let homeDirectory = NSHomeDirectory() Documents目录 保存应用程序运行时生成的持久化数据。...iOS 中由于只有一个唯一路径,所以直接取数组第一个元素即可。...不应该直接创建偏好设置文件,而是应该使用UserDefaults类来取得和设置应用程序的偏好。 Library/Caches 目录:主要存放缓存文件,此目录下文件不会在应用退出时删除。...通过UserDefaults来设置和读取偏好设置。 偏好设置以key-value的方式进行读写操作。 默认情况下数据自动以plist形式存储沙盒的Library/Preferences目录。...传入 App Groups 的 ID:操作共享目录中的 plist 文件,以便在跨 App 或宿主 App 与扩展应用之间(如 App 与 Widget)共享数据。

98720

iOS通过NSUserDefaults实现简单的应用间数据传递

iOS中NSUserDefaults详解 NSUserDefaults是用于保存应用程序设置,应用信息等轻量级数据的的一个类,其本质是将数据写为plist文件的形式保存在本地。...IOS中,系统为每一个应用程序都默认创建了一个NSUserDefaults对象。...版本已经不能通过下面的方法应用进行传值!!!...二、三个特殊的域及实现简单的应用信息传递 我们应该了解到,IOS中,因为沙盒模式的存在,应用是不允许互相访问数据与传值通信的。...某些需求下,我们可能会需要应用程序的传值与通信,当然除了通过网络外,对于非常小的数据量,比如验证另一应用从程序是否登录,是否安装并且开启过一次,我们也可以通过NSUserDefaults的一个全局的数据表来实现

85820

UserDefaults 浅析及其使用管理

我想每一个 iOSer 对UserDefaults都有所了解,但大家真的完全了解它吗?下面,我谈谈我对UserDefaults的看法。 同时,这也应该是 iOS 持久化方式系列的开篇文章了。...init() @available(iOS 7.0, *) public init?...配置中 Group ID:会操作 APP 的共享目录中创建的以Group ID命名的 plist 文件,方便宿主应用与扩展应用之间共享数据; 传入其他值:操作的是沙箱中 Library/Preferences... UserDefaults 里面最好使用object(forKey:),这是标准用法。 UserDefaults 底层也是使用的 plist 文件,那它和普通的 plist 文件读取有什么区别呢?...示例,协议默认实现为 UserDefaults.standard /// 如果想存储另外的plist文件中,便可以单独实现 var userDefaults: UserDefaults

96710

iOS开发之WidgetKit

iOS 14 Apple 推出了 WidgetKit,Widget 就像一个迷你版的 App,可以快速访问它所提供的信息—比如天气、日历事件、笔记等。...介绍 WidgetKit 通过 iOS 主屏幕或 macOS 通知中心放置小部件,让用户可以随时访问 App 中的内容。Widget 可以保持更新,从而让用户获得最新信息。...本地数据共享可以通过 App Groups,它是 iOS 8 之后推出的 App 之间共享数据的方式,只需要简单的配置就可以实现数据的共享。...实现 配置完成以后,可以通过UserDefaults或FileManager来实现 App 与 Widget 的数据共享,这里以UserDefaults为例,因为 SwiftUI 提供了@AppStorage...App // 包含App Groups的UserDefaults @AppStorage("contact", store: UserDefaults(suiteName: "group.cn.abc.yf.SwiftUI-Widget

2.6K32

iOS开发之WidgetKit补充

iOS 14 正式版发布之前我写了一篇博文《iOS开发之WidgetKit》,iOS 14 正式版发布以后,经测试,Apple 改变了 Widget 的 API,所以本文进行一个补充说明(在前文的基础上做了修改...介绍 WidgetKit 通过 iOS 主屏幕或 macOS 通知中心放置小部件,让用户可以随时访问 App 中的内容。Widget 可以保持更新,从而让用户获得最新信息。...本地数据共享可以通过 App Groups,它是 iOS 8 之后推出的 App 之间共享数据的方式,只需要简单的配置就可以实现数据的共享。...实现 配置完成以后,可以通过UserDefaults或FileManager来实现 App 与 Widget 的数据共享,这里以UserDefaults为例,因为 SwiftUI 提供了@AppStorage...App // 包含App Groups的UserDefaults @AppStorage("contact", store: UserDefaults(suiteName: "group.cn.abc.yf.SwiftUI-Widget

1.9K30

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

构建iOS应用程序的一个好处是,您在应用程序货币化方面有很多选择:普通的vanilla付费应用程序,广告支持的免费应用程序,甚至支持应用程序内购买的应用程序。...您需要熟悉基本的Swift和iOS编程概念。如果这些是不熟悉的主题,那么 开始之前查看我们的Swift教程范围。...注意:如果IAP未显示列表中,请确保Xcode首选项的“帐户”部分中使用您用于创建应用程序ID的Apple ID登录。 ? image 打开RazeFaceProducts.swift。...注意:您可以iOS模拟器和物理iOS设备上显示IAP产品,但如果您要测试购买或恢复购买,则只能在物理设备上执行此操作。更多相关信息,请参阅下面的采购部分。 ?...当一个或多个事务状态发生变化时,它会被调用。

5.4K20

探索 App Clips

◆ ◆  ◆ 简介 iOS14中苹果推出了很多新特性,其中就包含App Clips。App Clips类似微信的小程序,不需要显式的去App Store里下载,苹果会在对应的时机进行下载。..._wv=1027&k=lzJejkSl),不管你是大牛还是小白都欢迎入驻 ◆ ◆  ◆ Apple Connect配置 每个应用程序只能有一个App Clips,但可以有多个配置,可以定义标题、副标题...二者的数据共享主要是沙盒的数据迁移,所以安装主App后就需要从App Clips读取数据。...不同target或应用访问沙盒很简单,可以通过NSUserDefaults并传入对应的group的方式创建userDefaults对象,可以对key、value进行操作。...◆ ◆  ◆ 审核 App Clips是作为应用程序的一部分参与审核的,所以需要随客户端版本上线。虽然App Clips和主App一个project中,但并不占用主App的包体积。

1.8K20

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

根据要存储的的数据的大小、存储性质以及存储类型,iOS和Android中哪个都有多种存储方式。...研究存储方式之前,我们有必要先研究下这些文件会存储到什么地方去,这就需要我们了解iOS App特有的沙盒机制了。...所以选择存放目录时,一定要认真选择适合的目录。 应用程序包:存放的是应用程序的源文件,包括资源文件和可执行文件。...如果你要仿写某一个App或借用某个App的应用图标,可以该App的应用程序包中找到其.app结尾的源文件,然后显示报内容即可直接获取到其所有的图标和应用切图。...归档iOS中是另一种形式的序列化,只要遵循了NSCoding协议的对象都可以通过它实现序列化。

2.8K100

实时切换 Core Data 的云同步状态

数据权限模块开启 NSPersistentCloudKitContainer 的同步共享数据库或公共数据库功能后,为了提高数据操作权限的验证效率,该模块会将共享或公共数据库 iCloud 上对应的原始数据...Container 使用同一个 Data Model一个应用程序中,Core Data 的 Data Model( 使用数据模型编辑器创建的模型文件 )只能被加载一次。...: UserDefaults.standard, cleanStrategy: .none)请参阅 CoreData 中使用持久化历史跟踪9...会在重启后( 应用运行中进行如上操作,iOS 应用会自动重启 )对所有的与账户关联的数据设备上进行清除( 并不会清除云端的数据,当账户恢复或开启同步功能后仍可同步回本地 )。...如果我们将本该自动清除的数据保留在本地,且用户切换了 iCloud 账户,如果不做妥善处理的话,很可能会造成数据多个账户之间的混乱总结俗话说有得必有失,使用了双 container 以及不清除 transaction

1.4K20

SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据

是苹果官方提供的用于设备共享键值数据的解决方案。...它是 CloudKit 服务项目中的一员,只需简单的配置,就可以实现在不同的设备上共享数据(同一个 iCloud 账户)。...•NSUbiquitousKeyValueStore 尚未提供 SwiftUI 下的便捷使用方法 从 iOS 14 开始,苹果为 SwiftUI 提供了 AppStorage,同对待@State 一样,...多数情况下,我们可以将@AppStorage 看作是 UserDefaults 的 SwiftUI 包装,但在个别情况下,@AppStorage 并不完全与 UserDefaults 的行为保持一致(...Zephyr 处理 UserDefaults 同 NSUbiquitousKeyValueStore 之间的联动方面做的很不错,但由于@AppStorage 的独特性(并非真正意义上的 UserDefaults

4.9K40

【Airplay_BCT】关于Bonjour的概念解答

iTunes、iPhoto、Messages 和 Safari 等应用程序使用 mDNSResponder 实现零配置网络音乐共享、照片共享、聊天和文件共享,以及发现打印机和网络摄像头等硬件设备的远程用户界面... iOS 5 及更高版本中,应用程序必须明确选择通过蓝牙进行服务发现,并且必须使用低级 DNS 服务发现 C API 解析服务。...对于正在注册服务的 OS X 应用程序开发人员,在给定计算机上拥有该服务的一个实例可能是有意义的(而不是可能在多个帐户中运行的应用程序的每个实例一个)。...在这种情况下,与其让您的应用程序呈现自己的用户界面供用户输入广告服务的名称,不如使用共享首选项中系统提供的默认名称(称为“计算机名称”)进行注册更为方便控制板。...用户我的应用程序中浏览网络并选择他们希望使用的服务实例后,我应该将该 IP 地址保存在我的应用程序首选项文件中,对吗? 错误的。这是一个常见的错误。

2K50

Swift 单元测试入门

这篇文章内不会涵盖 内存泄漏测试 或 为共享扩展编写 UI 测试,而是主要关注编写更好的单元测试。我还将分享帮助我开发更好、更稳定的应用程序的最佳实践。...这显示红色错误和控制台日志中,可帮助您快速识别失败的测试。 Setup and Teardown 多个测试方法中使用的参数可以定义为测试用例类中的属性。...如果您有多个测试方案,这将很有用。 只显示失败的测试。这将帮助您快速找到失败的测试。 侧边栏中启用覆盖 在编辑器中启用代码覆盖 测试迭代计数向您显示在上次运行测试期间是否命中了特定代码段。...通过一些基本原则,您可以确保工作效率、保持专注并编写您的应用程序最需要的测试。 您的测试代码与您的应用程序代码一样重要 深入探讨实用技巧之后,我想介绍一种必要的心态。...就像编写应用程序代码一样,您应该尽最大努力编写高质量的测试代码。 考虑重用代码、使用协议、多个测试中使用时定义属性,并确保您的测试清理所有创建的数据。

2.7K40

iOS安全基础之钥匙串与哈希

了解的同时,我还会告诉你如何使用一些基本的加密哈希方法来安全地将你的输入信息存储iOS钥匙串中,这样一来,你数据的私密性和受保护程度都将大幅度提高。...每个应用程序的钥匙串相对来说是独立的,但是一些情况下也可以实现应用程序之间钥匙串数据的共享,前提是必须同一个TeamID下的应用。...难道仅仅是因为UserDefaults中不存储base-64编码的用户密码吗?当然不是!对于攻击者来说,恢复以这种方式存储的密码简直再简单不过了,如果是这样,那安全性就很难保证了。...最后,Settings.currentUser由存储UserDefaults中的 user设置的。 不过,此方法并不是最完美的,因为直接存储用户密码并不是最安全的做法。...注意:对于使用服务器后端进行身份验证,应用程序和服务器将共享相同的盐化值,这就允许他们以相同的方式构建哈希并比较两个哈希来验证身份。

2.8K20

Swift 中的属性包装器

例如,假设我们正在开发一个消息应用程序,它使用 Foundation 的 UserDefaults API磁盘上存储各种用户设置和其他轻量级数据。...上面的设置使我们的新属性包装器易于使用,只要我们希望一个属性由用户默认值.standard,但由于我们参数化了该依赖关系,如果愿意,我们还可以选择使用自定义实例——例如,为了方便测试,或者能够同一应用程序组中的多个应用程序之间共享值...我们所要做的就是将defaultValue属性添加到包装器中,然后底层UserDefaults存储不包含属性键的值时使用它。...因为我们希望代码库中共享这些值,所以我们将把包装器实现为一个类: @propertyWrapper final class Flag { var wrappedValue: Value...然而,即使使用Codable时,实现这一点通常也会涉及到相当多的样板文件,因为对于那些可能尚未添加到后端的标志(或者测试或回滚完成后已删除的标志),我们很可能希望返回到应用程序的默认值。

2.6K30

IOS开发进阶系列】iOS系统架构专题

,并且大部分与用户界面有关,本质上来说它负责用户iOS设备上的触摸交互操作。...其主要分为如下几个: Surface Manager:       执行多个应用程序时候,负责管理显示与存取操作的互动,另外也负责2D绘图与3D绘图进行显示合成。...Dalvik虚拟机:       Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一个Dalivik...经过与标准Linux内核源代码进行详细对比可以发现Android内核与标准Linux内核文件系统、进程通信机制、内存管理等方面存在不同。         ...Android新增加了一种内存共享的处理方式Ashmem。通过Ashmem进程可以匿名自由共享具名的内存块这种共享方式标准Linux当中不被支持。

66941
领券