学习笔记9-@AppStorage、@SceneStorage、Vapor、Core Data Relationship、Mac Catalyst

289 阅读3分钟

@AppStorage、@SceneStorage

@AppStorage 和 @SceneStorage 是 SwiftUI 中用于状态管理的两个不同的属性装饰器,它们提供了在不同范围内持久化存储状态的方式。@AppStorage 属性包装器是对 UserDefaults 的包装。这意味着它非常适合存储简单的键值对。当 UserDefaults 的数据发生变化时,视图将重新加载。@AppStorage 在整个应用范围内持久化存储数据,即使应用被关闭并重新打开后,这些数据也能够保持不变。@SceneStorage 仅保留视图当前所在场景的本地数据,应该仅将场景存储应用于对应用程序来说不重要的状态相关数据。

struct ContentView: View {
    @SceneStorage("lastTap") var lastTap: Double?
    var dateString: String {
        if let timestamp = lastTap {
            return Date(timeIntervalSince1970: timestamp).formatted()
        } else {
            return "Never"
        }
    }
    var body: some View {
        Text("Button was last clicked on (dateString)")
        Button("Click me") {
            lastTap = Date().timeIntervalSince1970
        }
    }
}

Vapor

Swift Vapor 是一个基于 Swift 编程语言的 Web 框架,提供轻量级、模块化的工具集,帮助开发者快速构建高性能、安全的 Web 应用程序。Vapor 利用 Swift 的安全性和性能优势,支持纯 Swfit 开发,具有清晰的文档和示例,易于学习。此外,Vapor 拥有活跃的社区,提供丰富的包和中间件,适用于构建 RESTful API 服务、Web 应用程序后端和微服务等。

import Vapor
 
let app = try Application(.detect())
defer { app.shutdown() }

app.get("hello") { req in
    return "Hello, world."
}

try app.run()

Core Data 关联关系

iOS Core Data 是一个对象图管理器和持久化框架,它允许开发者以面向对象的方式存储和管理数据。Core Data 中的关联关系是实体间的连接,用于模拟现实世界中的各种关系,如一对多、多对一或多对多。关联关系通过实体定义中的属性来建立,这些属性指向另一个实体。例如,一个“作者”实体可能有一个指向多个“书籍”的一对多关系。关联关系可以是单向或双向,需要设置删除规则来决定父对象被删除时相关联的对象的处理方式。Core Data 会自动管理双向关系中的逆关系,但开发者需要注意性能考量,尤其是在处理多对多关系时。

Relationships.png

Mac Catalyst

Mac Catalyst 是苹果提供的技术,允许开发者将 iPad 应用轻松移植到 Mac。它基于 UIKit 框架,使开发者能够重用大部分现有代码,同时利用 Mac 的特定功能,如鼠标、触控板和菜单栏。Catalyst 旨在实现快速上市、保持用户界面一致性,并支持平台特定功能。但使用时需注意平台差异和性能优化,确保应用在 Mac 上的表现。

Mac Catalyst.png

参考文档