diff --git a/MyQrCode.xcodeproj/xcuserdata/yc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MyQrCode.xcodeproj/xcuserdata/yc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index b80ee3d..0a7f660 100644
--- a/MyQrCode.xcodeproj/xcuserdata/yc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/MyQrCode.xcodeproj/xcuserdata/yc.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -324,5 +324,21 @@
landmarkType = "7">
+
+
+
+
diff --git a/MyQrCode/Views/Generator/CreateQRCodeView.swift b/MyQrCode/Views/Generator/CreateQRCodeView.swift
index e544c5b..e656056 100644
--- a/MyQrCode/Views/Generator/CreateQRCodeView.swift
+++ b/MyQrCode/Views/Generator/CreateQRCodeView.swift
@@ -97,7 +97,7 @@ Button("confirm".localized) { }
} message: { Text(alertMessage) }
.background(
NavigationLink(
- destination: QRCodeStyleView(qrCodeContent: generateQRCodeContent(), qrCodeType: selectedQRCodeType, existingStyleData: nil, historyItem: nil),
+ destination: QRCodeStyleView(qrCodeContent: generateQRCodeContent(), qrCodeType: selectedQRCodeType, existingStyleData: nil),
isActive: $navigateToStyleView
) {
EmptyView()
diff --git a/MyQrCode/Views/Generator/QRCodeStyleView.swift b/MyQrCode/Views/Generator/QRCodeStyleView.swift
index 33a44e9..1e9a6b6 100644
--- a/MyQrCode/Views/Generator/QRCodeStyleView.swift
+++ b/MyQrCode/Views/Generator/QRCodeStyleView.swift
@@ -39,7 +39,15 @@ struct QRCodeStyleView: View {
let qrCodeContent: String
let qrCodeType: QRCodeType
let existingStyleData: QRCodeStyleData? // 可选的现有样式数据
- let historyItem: HistoryItem? // 可选的现有历史记录项
+ @State private var id: String? = nil
+
+ // 初始化器
+ init(qrCodeContent: String, qrCodeType: QRCodeType, existingStyleData: QRCodeStyleData? = nil, historyItemId: String? = nil) {
+ self.qrCodeContent = qrCodeContent
+ self.qrCodeType = qrCodeType
+ self.existingStyleData = existingStyleData
+ self._id = State(initialValue: historyItemId)
+ }
@Environment(\.dismiss) private var dismiss
@EnvironmentObject var coreDataManager: CoreDataManager
@EnvironmentObject var languageManager: LanguageManager
@@ -152,7 +160,7 @@ struct QRCodeStyleView: View {
qrCodeContent: qrCodeContent,
qrCodeType: qrCodeType,
styleData: createStyleData(),
- historyItem: historyItem
+ historyItem: nil
),
isActive: $showingSavedView
) {
@@ -557,7 +565,7 @@ struct QRCodeStyleView: View {
// MARK: - 保存二维码
private func saveQRCode() {
// 只保存到历史记录,不保存到相册
- if historyItem != nil {
+ if id != nil {
updateExistingHistory()
} else {
saveToHistory()
@@ -656,6 +664,9 @@ struct QRCodeStyleView: View {
try context.save()
print("✅ 自定义二维码保存成功:\(self.qrCodeContent)")
+ // 设置ID值,用于后续更新
+ self.id = historyItem.id?.uuidString
+
// 强制刷新历史记录
self.coreDataManager.objectWillChange.send()
@@ -675,13 +686,23 @@ struct QRCodeStyleView: View {
// MARK: - 更新现有历史记录
private func updateExistingHistory() {
- guard let existingHistoryItem = historyItem else { return }
+ guard let id = id else { return }
// 确保在主线程上执行Core Data操作
DispatchQueue.main.async {
do {
let context = self.coreDataManager.container.viewContext
+ // 根据ID查找现有的历史记录项
+ let fetchRequest: NSFetchRequest = HistoryItem.fetchRequest()
+ fetchRequest.predicate = NSPredicate(format: "id == %@", id)
+
+ let results = try context.fetch(fetchRequest)
+ guard let existingHistoryItem = results.first else {
+ print("❌ 未找到ID为 \(id) 的历史记录项")
+ return
+ }
+
// 保存二维码样式数据
let styleData = self.createStyleData()
@@ -1061,7 +1082,7 @@ struct ImagePicker: UIViewControllerRepresentable {
// MARK: - 预览
#Preview {
- QRCodeStyleView(qrCodeContent: "https://www.example.com", qrCodeType: .url, existingStyleData: nil, historyItem: nil)
+ QRCodeStyleView(qrCodeContent: "https://www.example.com", qrCodeType: .url, existingStyleData: nil)
.environmentObject(CoreDataManager.shared)
.environmentObject(LanguageManager.shared)
}
diff --git a/MyQrCode/Views/History/HistoryView.swift b/MyQrCode/Views/History/HistoryView.swift
index 0b04f59..1f2e236 100644
--- a/MyQrCode/Views/History/HistoryView.swift
+++ b/MyQrCode/Views/History/HistoryView.swift
@@ -325,7 +325,7 @@ Button("delete".localized, role: .destructive) {
qrCodeContent: itemToEdit.content ?? "",
qrCodeType: getQRCodeType(from: itemToEdit),
existingStyleData: getStyleData(from: itemToEdit),
- historyItem: itemToEdit
+ historyItemId: itemToEdit.id?.uuidString
)
}
},
diff --git a/MyQrCode/Views/History/QRCodeDetailView.swift b/MyQrCode/Views/History/QRCodeDetailView.swift
index 1a596c1..6560433 100644
--- a/MyQrCode/Views/History/QRCodeDetailView.swift
+++ b/MyQrCode/Views/History/QRCodeDetailView.swift
@@ -62,7 +62,7 @@ Button("confirm".localized) { }
qrCodeContent: historyItem.content ?? "",
qrCodeType: getQRCodeType(),
existingStyleData: getStyleData(),
- historyItem: historyItem
+ historyItemId: historyItem.id?.uuidString
),
isActive: $navigateToStyleView
) {