Refactor QRCodeStyleView to remove historyItem parameter and replace it with historyItemId for improved data handling. Update related views to accommodate this change, enhancing the clarity and maintainability of the codebase.

main
v504 2 months ago
parent a1bd7e8420
commit 0c2d070878

@ -324,5 +324,21 @@
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "F5CCC84E-47B2-4EC3-BDD3-9AB6697A241C"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "MyQrCode/Views/Generator/QRCodeStyleView.swift"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "620"
endingLineNumber = "620"
landmarkName = "createStyleData()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

@ -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()

@ -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> = 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)
}

@ -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
)
}
},

@ -62,7 +62,7 @@ Button("confirm".localized) { }
qrCodeContent: historyItem.content ?? "",
qrCodeType: getQRCodeType(),
existingStyleData: getStyleData(),
historyItem: historyItem
historyItemId: historyItem.id?.uuidString
),
isActive: $navigateToStyleView
) {

Loading…
Cancel
Save