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

如何 SwiftUI 的列表变得更加灵活

前言 List 可能是 SwiftUI 附带的内置视图中最常用的一种,它使我们能够在任何 Apple 平台上呈现“类似于表格视图”的用户界面。...元素绑定和自定义滑动操作 接下来,让我们看看如何将完全自定义的滑动操作添加到列表中。...然后,让我们使用另一个新功能,集合元素绑定,系统自动为我们的 articles 数组中的每个元素创建一个可变绑定: struct ArticleList: View { @ObservedObject...不仅如此,下拉刷新是由 async/await 提供支持,不需要增加任何额外的代码就可以系统知道什么时候重新加载结束。....refreshable { await viewModel.reload() } } } 要了解有关 async/await 的更多信息以及如何

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

SwiftUI 与 Core Data —— 安全地响应数据

本文将介绍可能在视图中产生严重错误的原因,如何避免,以及在保证视图对数据变化实时响应的前提下如何为使用者提供更好、更准确的信息。由于本文会涉及大量前文中介绍的技巧和方法,因此最好一并阅读。...如果取消标量类型,我们可以模型编辑器生成支持可选值的特定类型( 例如 NSNumber?...协议呢?...由于 AnyConvertibleValueObservableObject 符合 ObservableObject 协议,一样会引发 Cell 视图的更新,在新的一轮渲染中,如果我们限定 convertToGroup...为了 ConvertibleValueObservableObject 协议能够满足各种场景,我们需要做如下的调整:public protocol ConvertibleValueObservableObject

3.2K20

Swift 周报 第十八期

目前,世界杯正在进行中,有关足球的消息总能吸引外界,但苹果收购曼联这事确实人摸不着头脑。 供应链确认 iPhone15 全系 C 口 供应链传出苹果下一代 iPhone 15 最新规格。...Swift论坛 讨论是否应该用 Codable 还是用 NSCoding[3] 讨论NSKeyedArchiver, CoreData 和其他的存储方案[4] 讨论数组的悬空指针[5] do {...协议一致性可以在定义类型的模块之外定义,这很自然地得出结论:这样的协议如何添加存储?您能做的最好的事情就是协议要求您的类型具有存储空间。您的类型定义仍然必须实际定义该存储。...和其他的存储方案: https://forums.swift.org/t/nskeyedarchiver-coredata-and-other-storage-solutions/61603 [5]数组的悬空指针...: https://forums.swift.org/t/dangling-pointer-from-array/61609 [6]如何从 ReducerProtocol 中创建的alert回调中触发操作

1.9K20

SwiftUI 与 Core Data —— 问题

当前,如何 Core Data 融入流行的应用架构体系,在 SwiftUI、TCA、Unit Tests、Preview 等环境下更加顺畅地工作已成为我的主要困扰和研究方向。...但托管机制意味着,开发者在进行任意操作前首先要搭建符合要求的托管环境。操作托管对象必须首先创建托管对象上下文。而上下文可以工作的前提是创建托管协调器和持久化存储。...为了避免出现线程安全问题,数据符合 Sendable 协议是有效的手段。很显然,托管对象并不具备符合 Sendable 协议的基础。...如何 Core Data 与使用新并行机制的框架进行配合,同样是摆在开发者面前的一个新课题。我向往的使用方式尽管有些贪心,但我仍希望能做到鱼和熊掌兼而得之。...https://discord.gg/ApqXmy5pQJ[3] 形成共识: https://www.reddit.com/r/iOSProgramming/comments/q2w856/realm_vs_coredata_in

85840

避免 SwiftUI 视图的重复计算

本文将介绍如何减少( 甚至避免 )类似的情况发生,从而改善 SwiftUI 应用的整体表现。...所有可以变量成为 Source of Truth 的属性包装器都有一个特点 —— 符合 DynamicProperty 协议。...视图符合 Equatable 协议以自定义比对规则 也许由于某种原因,你无法采用上面的方法来优化构造参数,SwiftUI 还提供了另外一种通过调整比对规则的方式用以实现相同的结果。...视图符合 Equatable 协议 为视图自定义判断相等的比对规则 在早期的 SwiftUI 版本中,我们需要使用 EquatableView 包装符合 Equatable 协议的视图以启用自定义比较规则...CellView(id: i){ store.sendID(i) } 解决的方法有两种: CellView 符合 Equatable 协议,不比较 action 参数 struct CellView

9.2K81

架构之路 (七) —— iOS App的SOLID原则(一)

了解如何将其应用于您的 SwiftUI iOS 应用程序。内容来自翻译。 接着看下写作环境: Swift 5, iOS 14, Xcode 12 下面就是正文了。...: ExpenseModelProtocol { } 请注意,ExpenseModel 与协议具有相同的属性名称,因此您只需添加一个扩展即可符合协议。...您将创建一个抽象类,而不是创建一个具体实现符合协议,更具体的实现需要子类化该抽象类。 它实现了相同的目标:您可以轻松地交换底层实现,而无需更改任何视图。...在这种情况下,原则表明您应该将 saveEntry(title:price:date:comment:)分成自己的协议,然后 ReportsDataSource 符合协议。 1....您的两个数据源现在都符合您的新协议,该协议非常具体地说明了它的作用。 剩下的就是更改其余代码以使用此协议

4.7K10

SwiftUI 与 Core Data —— 数据定义

在今后的文章中我们将尝试用新的思路来创建一个 SwiftUI + Core Data 的 app,看看能否避免并改善之前的一些问题。本文将首先探讨如何定义数据。...我尽量这个功能简单的 app 能够触及较多的 SwiftUI + Core Data 的开发场景。...面向协议编程面向协议编程是贯穿 Swift 语言的基本思想,也是其主要特点之一。通过不同的类型遵守相同的协议,开发者便可以从具体的类型中解放出来。...同时考虑到未来 Reducer 有被移出主线程的趋势,数据符合 Sendable 也能避免出现多线程方面的问题。...由于每个结构体实例势必需要对应一个托管对象实例,结构体类型符合 Identifiable 也能更好地为两者之间创建联系。

2.4K40

揭秘 SwiftData 的数据建模原理

本文将深入探讨 SwiftData 是如何通过代码创建数据模型的,使用了哪些新的语言特性,并展示了如何通过声明代码来创建 PersistentModel 实例。...阅读 CoreData 探秘 - 从数据模型构建到托管对象实例[4] 一文,了解更多信息。 SwiftData 则通过 Model 宏,直接将上述描述信息集成在了声明代码的内部。...由于 SwiftData 允许数据模型的属性声明为更为复杂的类型(枚举,符合 Encoded 协议的结构体等),因此,SwiftData 在构建模型时将通过给定的 KeyPath 来映射对应的存储类型,..._$backingData = newValue } } createBackingData 是 PersistentModel 协议提供的一个类方法,它通过获取已经加载的数据模型信息,创建一个符合...SwiftData 利用这一功能,在构造阶段对持久化属性进行显式赋值,减轻了开发者的工作量,也模型代码的声明更符合 Swift 语言的逻辑。

33120

如何在Xcode下预览含有Core Data元素的SwiftUI视图

如何在Xcode下预览含有Core Data元素的SwiftUI视图 从SwiftUI诞生之日起,预览(Canvas Preview )一直是个让开发者又爱又恨的功能。...结合两年来我在SwiftUI中使用Core Data的经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃的部分原因•如何在之后的开发中避免类似的崩溃出现•如何在Xcode中安全可靠地预览含有...但为了它可以即时响应SwiftUI视图的变化,苹果对其做出了不少的修改。如果说标准的模拟器可以涵盖真实设备的90%的功能,那么用于预览的模拟器可能只能提供50%的设备拟真度。...预置复杂数据的Bundle数据库 对于拥有复杂数据模型的应用该如何创建用于预览的演示数据呢?...我目前在开发使用SwiftUI+CoreData的应用程序时,将CoreData部分的开发同应用程序的UI构建是完全分离的。

5.1K10

如何GA符合GDPR合规要求?5个步骤快速入门

如果您的组织不符合规定,则可能会受到2000万欧元或全年营收4%的处罚。 即使您没有实体企业在欧盟设立,也要遵从GDPR;因为如果您向欧盟公民提供商品或服务,您将会受到影响。...您可以在此网站上查看更多详细的信息,几乎可以肯定Google Analytics将在2018年5月25日之前完全符合要求。作为数据处理器的一部分,Google必须提供您所需要接受的数据处理协议。...GoogleAnalytics符合GDPR的可操作步骤 ?...1审核个人身份信息(PII)数据 希望这并不会人感到意外,但是收集个人身份信息(PII)是违反Google Analytics服务条款的。...如何收集? 为什么要收集? 如何使用? 将与谁分享? 这会对个人产生什么影响? 使用意图可能导致个人反对或抱怨吗?

1.7K20

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

欢迎大家在 Discord 频道[2] 中进行更多地交流 SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年的升级是一种小修小补的行为,那么今年苹果在 SwiftUI 5.0 上做出的努力至少算得上是中期改款了...本次升级带来了动画完成回调、阶段性动画、关键帧动画、全新的 Transition 协议( 支持转场状态 )、全新的 Shape 协议( 支持 Shape 之间的运算 )、全新的 TransactionKey...)、Shader 支持( 实现某些特殊效果将异常容易 )、类型安全的图片和颜色资源类型( Assets 会自动生成对应的代码 )、便捷的 Symbol 动画、全新的 CustomAnimation 协议...来判断 SwiftData 与 Core Data 两者的模型是否完全一致 PersistentModel 和 ModelContext 都不是 Sendable 的(ModelContainer 符合...Sendable),与 Core Data 一样,同样有线程限制 开启 com.apple.CoreData.ConcurrencyDebug 1 后,即使在新的 Context 中使用 transaction

35010

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

SwiftUI 如果说从 SwiftUI 1.0 到 4.0 每年的升级是一种小修小补的行为,那么今年苹果在 SwiftUI 5.0 上做出的努力至少算得上是中期改款了。...本次升级带来了动画完成回调、阶段性动画、关键帧动画、全新的 Transition 协议( 支持转场状态 )、全新的 Shape 协议( 支持 Shape 之间的运算 )、全新的 TransactionKey...)、Shader 支持( 实现某些特殊效果将异常容易 )、类型安全的图片和颜色资源类型( Assets 会自动生成对应的代码 )、便捷的 Symbol 动画、全新的 CustomAnimation 协议...来判断 SwiftData 与 Core Data 两者的模型是否完全一致 PersistentModel 和 ModelContext 都不是 Sendable 的(ModelContainer 符合...Sendable),与 Core Data 一样,同样有线程限制 开启 com.apple.CoreData.ConcurrencyDebug 1 后,即使在新的 Context 中使用 transaction

1.1K20

iOS开发之表视图爱上CoreData

CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功能和JavaEE中的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的...1.在TableView没遇到CoreData的时候我们怎么通过动态表视图来显示我们的通讯录的内容呢?也就是说我们通讯录的数据结构该如何组织呢?     ...CoreData相当于TableView和sqllite的纽带,说的专业一些就是映射,那么我们CoreData如何使用才会简化我们的操作呢?...下面将要介绍的才是这篇博客中的重点:我们如何使用CoreData才会TableView爱上它呢?...因此TableView深爱着CoreData. 上面我们完成了通过CoreData来对数据的插入和查询并同步到TableView中,下面将会介绍到如何对我们的Cell进行删除。

2.1K80

在 Core Data 中查询和使用 count 的若干方法

SwiftUI 下,使用@FetchRequest 获取的结果集,也可以使用上述方式。 如果设置了 fetchLimit ,可能无法获得正确的 count 结果。...在对 count 读取需求频繁的情况下,是极为优秀的解决方案 derived 完整的派生属性使用方法,请参阅 如何在 Core Data 中使用 Derived 和 Transient 属性[3]。...九、查询某对多关系所有记录的 count 数据 当我们想统计全部记录(符合设定谓词)的某个对多关系的合计值时,在没有使用派生属性或 willSave 的情况下,可以使用下面的代码: let fetchquest...通过设置 propertiesToGroupBy, SQLite 为我们完成这个工作。 例如,Item 有一个 birthOfYear 属性,该属性为年份数据( Int )。...Core Data with CloudKit(四)—— 调试、测试、迁移及其他: https://www.fatbobman.com/posts/coreDataWithCloudKit-4/ [3] 如何

4.6K20

SwiftUI 与 Core Data —— 数据获取

FetchRequest 极大地简化了在视图中获取 Core Data 数据的难度,配合 @ObservedObject( 托管对象符合 ObservableObject 协议 ),仅需几行代码,开发者便可以视图实现对数据变化的实时响应...自定义符合 DynamicProperty 协议的类型在 SwiftUI 中,常见的可以作为 Source of truth 的类型均符合 DynamicProperty 协议。...方法的具体细节,开发者无法自行向 SwiftUI 申请数据保存地址,但可以通过在自定义的类型中( 符合 DynamicProperty 协议 )使用系统提供的符合 DynamicProperty 协议的类型...当 SwiftUI 在视图存续期中重新创建视图描述实例时,自定义类型也将一并重新创建在视图存续期中,如果 SwiftUI 创新创建了视图描述实例,那么无论视图描述( 符合 View 协议的 Struct...首先,我们需要创建一个符合 ObjectsDataSourceProtocol 协议的类型, 通过属性为 FetchDataSource 类型来指定数据源。

4.6K30

苹果推出 SwiftData,可替代 SwiftUI 的 Core Data

虽然 SwiftUI 所提供的 API 持久化模型的定义成为可能,但这种方式却颇为繁琐。...var ingredients: [Ingredient] } 仔细看能发现 SwiftData 是如何依赖 Swift 5.9 中新引入的宏功能。...Bool、Int、String 等简单类型支持开箱可用,但更为复杂的类型则必须要符合 Codable 协议,才能于持久化类中使用。 如上文所述,SwiftData 与 SwiftUI 的相性很好。...而事实上,@Model 宏也会类在符合 ObservableObject 协议的同时,所有持久化的属性表现为 @Published 属性的形式。...为让开发者能更为轻松地迁移至 SwiftData,该框架支持在现有 Core Data 应用中的逐步采用,在苹果提供的演示项目中展示了如何在一个 Core Data 应用中仅部分使用 SwiftData

91730
领券