WWDC23 初识 SwiftData
SwiftData 是 WWDC 2023 发布的一个功能强大的数据建模、持久化管理框架,Swift 原生代码,无需引入额外文件(如 Core Data 的 data model 描述文件)。无缝接入 SwiftUI 声明式语法,实现建模,执行查找、过滤操作。这一切都得益于新的 Swift Macros 特性。
SwiftData 是 WWDC 2023 发布的一个功能强大的数据建模、持久化管理框架,Swift 原生代码,无需引入额外文件(如 Core Data 的 data model 描述文件)。无缝接入 SwiftUI 声明式语法,实现建模,执行查找、过滤操作。这一切都得益于新的 Swift Macros 特性。
在 SwiftUI 中使用 Picker 控件有多种样式选择,非常方便
iCloud 是 iOS 生态中很重要的一部分,从开放至今已经发展的非常完善。针对不同场景分为三部分:
使用 DispatchQueue
的 asyncAfter(deadline:qos:flags:execute:)
方法,可以实现延迟执行一段代码块的效果。
我们可以使用 Range 结构来定义一个连续值的范围,包括下限值,但不包括最大值。同时很方便的判断一个值是否在该范围内:
在 SwiftUI 中使用 Core Data,可以使用 property wrapper @FetchRequest
声明一个 FetchedResults
属性,自动从 Core Data 存储中获取一个数据集。参考文档:https://developer.apple.com/documentation/swiftui/fetchrequest
参考 Text 本地化文档 https://developer.apple.com/documentation/swiftui/text#Localizing-strings。如果使用 string 变量,需要转化为 LocalizedStringKey
, 例如自定义 View,需要传递一个文本参数,可以设置为
StoreKit 提供了多个 View 修改器,用于管理应用内购买项目
NSManagedObject
已经是 ObservableObject
,可以在 SwiftUI 中直接绑定属性,如:
使用 FormStyle
格式化文本非常方便,我们可以通过自定义 FormStyle
实现更多实用的格式化方法。
通过两层 GeometryReader
读取 ScrollView
内容及置顶视图的位置信息进行处理,可以实现在滚动时,置顶内容固定在顶部,并随着导航标题栏大小标题样式切换而自动适应位置。同时为置顶内容增加了阴影效果,会随着上下滚动深浅变化。
WWDC 20 介绍了在 Playgrounds 中使用 SwiftUI 可以轻松构建原型或者在 Xcode 中使用的组件 https://developer.apple.com/videos/play/wwdc2020/10643/,过程比较简单,这里只记录了 ProgressView
部分的代码,稍有修改。
SwiftUI 中 Image
不同于 UIImage
没有 Image(url:)
API,需要使用 URL 加载图片时可以使用异步图片 AsyncImage
,可以指定 url,设置 placeholder,监听进程等。
最近准备用 SwiftUI 重写一个万年没更新的应用,刚创建应用,模拟器运行,就遇到一个 Xcode 警报,提示 [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named " (no name)")
,原来是 Info
文件缺少 scene 配置项。
带关联值的枚举,可以使其成员携带更多信息。参考官方文档:https://docs.swift.org/swift-book/documentation/the-swift-programming-language/enumerations/#Associated-Values