Files
kangkang/康康/Persistence/WidgetSnapshot.swift
link2026 6c6a950140 ```
feat: 添加拍药盒功能和语音直达入口

- 实现拍药盒扫描流程,支持本地OCR识别药品信息
- 在日记页面添加拍药盒和记症状的三选一入口
- 优化按钮点击区域,确保符合苹果HIG最小命中区标准
- 添加用药记录到时间线的独立分类显示
- 实现长按+号语音直达功能,支持语音意图分类跳转
- 更新项目配置文件,启用代码分析和死代码剥离选项
- 增加多项本地化字符串支持新功能
```
2026-06-13 09:16:25 +08:00

45 lines
1.8 KiB
Swift
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import Foundation
/// App Widget ( App Group UserDefaults )
///
/// Widget SwiftData:store App ,
/// extension ;,
///
/// :`KangkangWidget` extension
/// (extension App , Xcode target membership )
/// :KangkangWidget/PinnedIndicatorsWidget.swift
struct WidgetSnapshot: Codable, Equatable {
struct Item: Codable, Equatable {
var name: String // ""
var value: String // "128"
var unit: String // "mmHg"
var statusRaw: String // IndicatorStatus.rawValue: high|low|normal
var capturedAt: Date
}
var updatedAt: Date
var items: [Item]
// MARK: - App Group
/// App Group ID target App Groups capability
static let appGroupID = "group.com.xuhuayong.kangkang"
static let storeKey = "kk.widget.snapshot.v1"
/// App Group (capability ) nil ,App
static var sharedDefaults: UserDefaults? {
UserDefaults(suiteName: appGroupID)
}
func save(to defaults: UserDefaults? = WidgetSnapshot.sharedDefaults) {
guard let defaults, let data = try? JSONEncoder().encode(self) else { return }
defaults.set(data, forKey: Self.storeKey)
}
static func load(from defaults: UserDefaults? = WidgetSnapshot.sharedDefaults) -> WidgetSnapshot? {
guard let defaults,
let data = defaults.data(forKey: storeKey) else { return nil }
return try? JSONDecoder().decode(WidgetSnapshot.self, from: data)
}
}