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

UserDefaults 浅析及其使用管理

在 UserDefaults 里面最好使用object(forKey:),这是标准用法。 UserDefaults 底层也是使用的 plist 文件,那它和普通的 plist 文件读取有什么区别呢?...{ get } /// 获取Data值,默认值为空 var dataValue: Data { get } // MARK: - 不存在nil /// 获取Bool值...Data() } // MARK: - 不存在nil /// 获取Bool值 public var bool: Bool { return UserDefaults.standard.bool...在取值的方法上借鉴了SwiftyJSON的思想,为每种基本结构提供可选值及非可选值两种方式,在使用时可根据自己的使用场景灵活使用。 我们如何进行使用呢?见下方代码示例,相关说明见注释。...当存储值不存在时返回的默认值 public init(_ key: String, defaultValue: T, userDefaults: UserDefaults = UserDefaults.standard

1.2K10

开关组件对比

JPush_APPKey @"JPush_APPKey_DEBUG" #else #define JPush_APPKey @"JPush_APPKey_Release" #endif 同样,也会有本地根据某个值来判断是否显示过什么东西的逻辑...大部分情况下开发的时候,是用UserDefaults存储一个bool值,用于判断。...}) // 使用时 // 获取存储的值,用于判断 对比 而在09|开关组件:如何使用功能开关,支持产品快速迭代中,作者把开关组件分为了三类:编译时开关、本地开关和远程开关 编译时开关:让编译器通过检查编译条件来启动后者关闭一些功能...通过Swift protocol定义了ToggleType和TogglesDataStoreType两个协议,并定义两个方法,判断开关是否打开、以及更新开关状态 // TogglesDataStoreType.swift...update的方法内容如果需要缓存则添加存储逻辑,如果不需要,则无需实现。

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

    iOS14开发-数据存储

    所有的非代码文件都要保存在此,例如图像,图标,声音,plist,文本文件等。 沙盒机制保证了 App 的安全性,因为只能访问自己沙盒文件下的文件。...domainMask:搜索主目录的位置。userDomainMask 表示搜索的范围限制于当前应用的沙盒目录(参考定义注释)。 expandTilde:是否获取完整的路径。...,所以模拟器运行同一个 App 时所得到的沙盒路径是不一样的,但上架的 App 在真机上运行不存在这种情况。...return currentVersion > localVersion } } 默认值 如果需要在使用时设置 UserDefaults 的默认值,可以使用register方法。...(defaults: [ Keys.name.rawValue: "UserA", Keys.isRem.rawValue: false ]) 注意:在设置默认值后如果修改了其中的属性值

    1K20

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

    它接收一个SKProduct对象数组并将它们传递给先前保存的完成处理程序。处理程序使用新数据重新加载表。如果出现问题,request(_:didFailWithError:)则调用。...检查Apple Developer System状态。或者,尝试此链接。如果它没有响应状态值,则iTunes沙箱可能已关闭。...} else { print("Not purchased: \(productIdentifier)") } } super.init() } 对于每个产品标识符,检查是否存储该值...如果交易已完成或已恢复,则会将其添加到购买集并将标识符保存在其中UserDefaults。它还会在该事务中发布通知,以便应用程序中的任何感兴趣的对象都可以监听它以执行更新用户界面等操作。...Swift Shopping RazeFace 恢复购买 如果用户删除并重新安装应用程序或将其安装在其他设备上,则他们需要能够访问以前购买的项目。

    5.6K20

    Swift 单元测试入门

    let cache = SearchQueryCache(userDefaults: userDefaults) /// ... write the test } } 这样做可以确保您不会操纵在模拟器上测试期间使用的标准用户默认值...nil,如果断言成功则返回它的值。...它会阻止您编写 XCTAssertNotNil 并结合解包或处理其余测试代码的条件链接。我鼓励您阅读我的文章 《如何使用 XCTest 在 Swift 中测试可选值》以了解更多详细信息。...如果您有多个测试方案,这将很有用。 只显示失败的测试。这将帮助您快速找到失败的测试。 在侧边栏中启用覆盖 在编辑器中启用代码覆盖 测试迭代计数向您显示在上次运行测试期间是否命中了特定代码段。...其次,您可以开始编写修复程序并运行新的单元测试来验证修复程序是否有效。此技术比运行模拟器来验证您的修复是否有效要快。 结论 编写定性的单元测试是开发人员的基本技能。

    2.7K40

    使用Swift模拟用户登录当网获取数据并保存到MySQL中

    4与MySQL数据库的无缝集成:Swift提供了多个MySQL客户端库,如MySQL Connector,使得与MySQL数据库的交互变得简单而便捷。如何进行模拟登录模拟登录用户当网获取数据的第一步。...2发送登录请求:使用URLSession的dataTask方法发送登录请求,并处理登录响应。3处理登录响应:检查登录响应的状态码和内容,判断登录是否成功。...如果登录成功,获取并保存登录后的会话信息,以便后续的数据获取。...MySQL中获取数据后,我们可以使用Swift的MySQL客户端将数据保存到MySQL数据库中。...2构建插入语句:使用Swift的MySQL客户端库,构建插入语句,将获取的数据参数作为提交给插入语句。3执行插入操作:使用Swift的MySQL客户端库,执行插入操作,将数据保存到MySQL数据库中。

    24130

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

    A:启动时检测 UserDefaults 是否为空,如果不是,则导入 Core Data,然后删除本地的 UserDefaults。...当生成文件后,需要将 Entity 切换成 Manual /None 模式,否则 Xcode 会出现类型重复声明的错误( Xcode 中还会有另一份 Entity 定义保存在项目内部 ),如果仍无法编译...实体属性的可选性Q:Core Data 中实体属性的可选性表现与预期不一致。如果我将某个属性标记为可选,则该属性不应具有默认值,并且托管属性应始终为可选属性。...如果我将其标记为非可选,则它应该需要默认值,并且托管属性应始终是非可选的。我们是否可以期待将来( 至少在新项目中 )做出这样的修正?...A:Core Data 的可选性理念早于 Swift 的存在,允许属性暂时无效。

    3.3K20

    Swift 中的属性包装器

    让我们看一下属性包装器是如何工作的,并探讨一些可以在实践中使用它们的情况的示例。...除此之外,唯一真正的要求是每个属性包装类型应该包含一个名为wrappedValue的存储属性,该属性告诉 Swift 要包装的是哪个底层值。...然而,我们的一些UserDefaults值实际上可能是可选的,如果我们必须不断地指定nil作为这些属性的默认值,那将是不幸的——因为这不是我们在不使用属性包装器时必须做的事情。...为了避免在这种情况下发生崩溃,我们必须更新属性包装,首先检查是否有任何赋值为nil,然后再继续将其存储在当前UserDefaults实例中,如下所示: // 因为我们的属性包装器的值类型不是可选的,但是...投影值 正如我们在本文中所探讨的,属性包装器的一个主要好处是,它们使我们能够以一种完全不影响我们的调用站点的方式向属性添加逻辑和行为——因为无论属性是否包装,值都是以完全相同的方式读写的。

    2.7K30

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

    NSTask 在Swift 中与Objective-C中的不同 Objective-C中, 是NSTask类 Swift 中, 是Process类 3....NSTask 使用 我们通过创建一个简单的克隆Git仓库的工程来熟悉NSTask的使用 如果你比较捉急,可以提前从这里下载NSTaskDemo 3.1 创建工程(本示例使用Swift,并默认你已经熟悉基本的...保存用户选择路径(为了获取访问权限) UserDefaults.standard.setValue(openPanel.url?....= "" else {return} if isLoadingRepo {return} // 如果正在执行,则返回 isLoadingRepo = true /...系统中 ,沙盒有个规则:在App运行期间通过NSOpenPanel用户手动打开的任意位置的文件,把这个这个路径保存下来,后面都是可以直接用这个路径继续访问文件,但当App退出后再次运行,这个路径默认是不可以访问的

    2.3K40

    译文: iOS Unit Testing and UI Testing Tutorial

    用户选择的游戏模式,app也会保存作为默认值(重启app,默认游戏模式是使用者上次选择的模式——译者) HalfTunes是NSURLsession Tutorial中的一个app,更新到Swift 3...你可能还需要测试当接收到URLSession的输入时,你的代码是否可以正确工作,又或者当UserDefaults、CloudKit更新时,是否还能正常工作。...image 来自Stub的假数据 接下来的测试,会检查updateSearchResults(_:)方法是否正确地解析了下载到的数据,检查searchResults.count是否正确。...右下角的segmented control用于切换游戏模式,并且更新gameStyle这个使用者默认选项。 下一个测试就是检查app是否正确更新了gameStyle这个默认值。...、选择了不同按钮之后,label是否正确存在(显示)。

    1.4K30

    肘子的 Swift 周报 #054| 安全、便利与隐私

    我衷心期待这种情况能得到改善,能够构建一个既保障隐私,又兼具安全性和便利性的统一数字生活环境。 如果必须在安全、便利与隐私这三者之间做出取舍,你会选择牺牲哪一项?...本篇文章将探讨如何在 Core Data 中应用 SwiftData 的思维方式,重点关注数据建模和并发编程。...Write, COW)是一种通过延迟复制来优化内存使用的技术:只有在修改内容时才进行数据复制,未修改时则共享引用,从而提升性能和减少内存占用。...Swift 广泛使用值类型,在此过程中 COW 成为提高效率的关键机制。...Spring 则模拟弹簧的运动,使用质量、刚度和阻尼等参数实现更自然的动态效果。よぺ 详细解析了这两种动画模型的原理与实现,并通过代码和动图展示了如何灵活运用它们。

    8210

    Swift 中 User Defaults 的读取和写入

    前言 User Defaults 是 Swift 应用程序存储在应用启动之间保持的首选项的首选解决方案。它是由属性列表(plist)文件支持的键-值存储。...介绍 User Defaults 应用程序通常使用 User Defaults 来存储用户的首选项。你可以存储首选项,例如用户最喜欢的股票或保存特定用户状态,例如“用户已看到引导”。...User Defaults 支持以下类型: 数据 字符串 数字(NSNumber) 日期 数组 字典 布尔值 如果你的类型不在此列表中,你需要找到一种将其转换为任何受支持类型的方法。...与此同时,我可以使用开关重置该值,并使用 RocketSim 重新启动应用程序,以查看工具提示是否再次显示。 你可以想象这大大加快了测试依赖于 User Defaults 的实施的工作流程。...最好的是你可以免费开始并使用标准套件测试编辑器,只需从 Mac App Store 安装 RocketSim 即可。

    33520

    编码篇-持久化NSUserDefaults

    前言 NSUserDefaults类,以字典形式保存数据,IOS会自动把字典中的键值对转换成对应的XML文件(也就是plist文件),这个文件会被保存到APP的沙盒目录中(路径为Library/Preferences...保存的数据。...Attempt to insert non-property list object 报错原因, 从NSUserDefaults返回的值是不可改变的,即便是你在存储的时候使用的是可变的值。...例如你使用mutable string做为“MyStringDefault”的值,当你做使用stringForKey:方法获取的值,这个值仍然是不可变的。...- (void)registerDefaults:方法来初始化,这个方法会检查 NSUserDefaults是否已经存在了相同的key,如果存在就不会将其覆盖(相当于什么也没做),如果不存在就做保存操作

    1.2K10

    肘子的 Swift 周报 #053| 打破年度发布制度:科技创新的新起点

    毕竟,在这自媒体时代,发布会是性价比极高的宣传利器,人们也习惯了被新品信息包围。 然而,当数据比拼失去光环、表面创新难以取悦,消费者终将回归本质:产品是否契合需求与个人品味?品牌的口碑如何?...前一期内容|全部周报列表 原创 SwiftUI 中的 UserDefaults 与 Observation:如何实现精准响应[4] Fatbobman(东坡肘子)[5] 在 SwiftUI 中,苹果提供的...本文将探讨如何在 Observation 框架下高效且便捷地管理 UserDefaults 中的数据,并提出一个完整而实用的解决方案:@ObservableDefaults[6]。...虽然数组是最常用的集合类型,但集合也有其独特的优势,尤其是在性能和避免重复值方面。 什么是 Swift 中的依赖注入?(What is dependency injection in Swift?)...UserDefaults 与 Observation:如何实现精准响应: https://t.ly/K_Kzw [5] Fatbobman(东坡肘子): https://x.com/fatbobman

    3700

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

    今天要说的是如何记录我们用户的登陆状态。例如微信,QQ等,在用户登陆后,关闭应用在打开就直接登陆了。那么我们在App开发中如何记录用户的登陆状态呢?...之前在用PHP或者Java写B/S结构的东西的时候,我们用Session来存储用户的登陆信息,Session是存在服务器上仅在一次回话中有效,如果要记录用户的登陆状态,那么会用到一个叫Cookie的东西...1.首先我们得有一个登陆页面对应的类为ViewController.h, 在登陆页面有两个TextField和一个Button用来接受用户的输入,在点击Button中的回调的方法中,如果用户登陆成功,则把用户信息存入...属性是否有值来选择加载哪个页面。...UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];   //如果用户未登陆则把根视图控制器改变成登陆视图控制器

    1.6K90

    @State 研究

    类型及作用域图片来自于SwiftUI for Absoloute Beginners 其中@State只能用于当前视图,并且其对应的数据类型为值类型(如果非要对应引用类型的话则必须在每次赋值时重新创建新的实例才可以...@State如何工作的 在分析@State如何工作之前,我们需要先了解几个知识点 属性包装器 作为swift 5.1的新增功能之一,属性包装器在管理属性如何存储和定义属性的代码之间添加了一个分割层。...呈现值(投射值)则返回当前包装值是否为偶数 @propertyWrapperstruct TwelveOrLess { private var number: Int init() { self.number...•public var wrappedValue: Value { get nonmutating set } 意味着他的包装值并没有保存在本地。•它的呈现值(投射值)为Binding类型。...我推测@State同视图的依赖是在ViewBuilder解析时进行的。编译器在解析我们的body时,会判断date的数据变化是否会对当前视图造成改变。如果没有则不建立依赖关联。

    3K20

    iOS_SwiftUI_iOS14_Widget

    ,即长按出现的菜单是否有编辑选项(如股票的widget,用户可以选择显示哪只股票) Embed in Application:(表示该widget是哪个target的附属品,如果workspace里有个...target就要注意别选错了) -> Finish 如图: 2、Base Code 自动生成的文件 + 代码: MOWidget.swift文件:主要的东西都在这里面 MOWidget.intentdefinition...(ofKind: "MOWidget") // 刷新指定的widget 、OC文件里刷新 会比较麻烦:还是需要利用swift文件,加上一堆判断后调用刷新方法。...通过AppGroupID获取UserDefaults进行的数据读写就可以共享了。...data: data) ... } 8.4、light、dark模式适配 新建Color:Assets.xcassets -> + -> Color set -> 可以分别设置light和dark模式下的色值

    2.4K20
    领券