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 Permalink 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)
}
}