第1章:項目概述與環境搭建

第1章:項目概述與環境搭建

學習目標

  • 了解YunChangAction靈感記錄應用的整體架構和功能
  • 掌握SwiftUI開發環境的配置方法
  • 創建項目基礎結構并理解文件組織方式
  • 實現應用的啟動屏幕和基本主題設置

理論知識講解

靈感記錄應用概述

靈感記錄應用是一種專門設計用來幫助用戶隨時捕捉、整理和管理各種想法的工具。在日常生活和工作中,靈感往往稍縱即逝,一個好的靈感記錄應用能夠幫助用戶快速記錄這些珍貴的想法,并通過分類、標簽等方式進行有效管理。

YunChangAction是一款功能豐富的靈感記錄應用,它不僅提供基本的筆記功能,還集成了AI輔助分類、多種視圖模式、數據導出等高級特性,幫助用戶更高效地管理創意和想法。

靈感記錄應用概念圖

輔助功能
核心功能
記錄
分類
標記
收藏
分析
推薦
生成
多種視圖
多種視圖
搜索
導出
導入
URL Scheme
應用快捷方式
列表視圖
網格視圖
搜索功能
數據導出
數據導入
快速操作
靈感筆記
筆記分類
標簽系統
收藏夾
AI服務
用戶

SwiftUI框架介紹

SwiftUI是Apple在2019年WWDC上推出的聲明式UI框架,它徹底改變了iOS應用開發的方式。與傳統的UIKit相比,SwiftUI具有以下優勢:

  1. 聲明式語法:使用簡潔的聲明式語法描述UI的外觀和行為
  2. 實時預覽:通過Canvas實時預覽UI變化,加速開發過程
  3. 自動適配:自動支持動態類型、深色模式和各種設備尺寸
  4. 組合式設計:通過組合小型、獨立的視圖構建復雜界面
  5. 數據驅動:內置狀態管理機制,UI會自動響應數據變化
SwiftUI
聲明式UI
數據驅動
組合式設計
跨平臺
簡潔語法
可讀性強
狀態管理
@State
@Binding
@ObservedObject
@StateObject
@EnvironmentObject
視圖組合
修飾符鏈式調用
iOS
macOS
watchOS
tvOS
布局系統
VStack
HStack
ZStack
LazyVGrid
LazyHGrid
實時預覽
Canvas
Preview宏

MVVM架構模式

YunChangAction采用MVVM(Model-View-ViewModel)架構模式,這是SwiftUI應用中常用的架構模式:

  • Model(模型):表示應用的數據和業務邏輯,如InspirationNote類
  • View(視圖):負責UI的展示,如ContentView、SplashScreen等
  • ViewModel(視圖模型):連接Model和View,處理UI邏輯和狀態管理,如InspirationManager

MVVM架構的優勢在于實現了關注點分離,提高了代碼的可測試性和可維護性。在SwiftUI中,通過@ObservedObject、@StateObject和@EnvironmentObject等屬性包裝器,可以輕松實現視圖與視圖模型之間的數據綁定。

表現層
邏輯層
數據層
數據
更新
綁定
用戶操作
實例化
狀態管理
UI組件
View
ViewModel
Model
InspirationNote
InspirationManager
ContentView/SplashScreen等

實踐步驟

1. 配置開發環境

所需工具和版本
  • macOS 12.0或更高版本
  • Xcode 14.0或更高版本
  • iOS 15.0+模擬器或實機
安裝步驟
  1. 從Mac App Store下載并安裝最新版Xcode
    1. (如果沒有安裝,這里按鈕會有下載字樣,如果有安裝按鈕就是獲取)
  • 安裝前

  • 安裝后:

在終端 配置Xcode命令行工具

在終端執行以下命令,配置Xcode command-line tools

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch

執行sudo命令時,需要下輸入macOS登錄用戶名的密碼,且用戶名具有管理員權限。
執行xcodebuild -runFirstLaunch命令時,會要求先確認Xcode license。

這里輸入密碼

  1. 打開Xcode并接受許可協議 ,點擊Agree

  1. 安裝必要的組件(模擬器、命令行工具等)

在這里插入圖片描述

2. 創建新項目

  1. 打開Xcode,選擇"Create a new Xcode project"
  2. 選擇"App"模板,點擊"Next"
  3. 填寫項目信息:
    • Product Name: YunChangAction
    • Organization Identifier: com.example
    • Interface: SwiftUI
    • Language: Swift
    • 確保"Use Core Data"未選中
  4. 選擇項目保存位置,點擊"Create"

在這里插入圖片描述

在這里插入圖片描述

3. 配置項目基本信息

在這里插入圖片描述

  1. 在項目導航器中選擇項目文件
  2. 在"General"標簽頁中設置:
    • Display Name: 靈感記錄
    • Deployment Info: iOS 15.0+
    • Device Orientation: Portrait
  3. 創建InfoCustom.plist文件,添加以下內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>com.yunchangaction</string><key>CFBundleURLSchemes</key><array><string>yunchangaction</string></array></dict></array><key>UIApplicationShortcutItems</key><array><dict><key>UIApplicationShortcutItemIconType</key><string>UIApplicationShortcutIconTypeCompose</string><key>UIApplicationShortcutItemTitle</key><string>快速記錄</string><key>UIApplicationShortcutItemType</key><string>com.yunchangaction.quicknote</string></dict></array></dict></plist>

在這里插入圖片描述

4. 創建項目文件結構

為了保持代碼的組織性和可維護性,我們將按照以下結構組織項目文件:

YunChangAction/
├── App/
│   ├── YunChangActionApp.swift  // 應用入口點
│   └── AppTheme.swift           // 應用主題定義
├── Views/
│   ├── SplashScreen.swift       // 啟動屏幕
│   ├── ContentView.swift        // 主內容視圖
│   ├── NoteViews/               // 筆記相關視圖
│   └── SettingsViews/           // 設置相關視圖
├── Models/
│   ├── InspirationNote.swift    // 靈感筆記模型
│   └── CategoryRecommendation.swift // AI推薦模型
├── ViewModels/
│   └── InspirationManager.swift // 靈感管理器
├── Services/
│   └── AIService.swift          // AI服務
├── Utilities/
│   └── Extensions.swift         // 擴展方法
└── Resources/
│   └── Assets.xcassets          // 資源文件

在Xcode中創建這些文件夾和文件:

  1. 在項目導航器中右鍵點擊YunChangAction文件夾
  2. 選擇"New Group"創建新文件夾
  3. 為每個文件夾創建相應的文件
    在這里插入圖片描述

5. 實現應用主題

創建AppTheme.swift文件,定義應用的主題色系:

import SwiftUI// 定義應用的主題色
struct AppTheme {static let primaryColor = Color(red: 0.2, green: 0.7, blue: 0.3)static let secondaryColor = Color(red: 0.5, green: 0.8, blue: 0.5)static let accentColor = Color(red: 0.4, green: 0.8, blue: 0.7)static let backgroundColor = Color(red: 0.95, green: 0.98, blue: 0.95)
}

6. 實現啟動屏幕

創建SplashScreen.swift文件,實現應用的啟動屏幕:

import SwiftUI// 啟動屏幕
struct SplashScreen: View {@State private var isAnimating = falsevar body: some View {ZStack {AppTheme.backgroundColor.ignoresSafeArea()VStack(spacing: 20) {Image(systemName: "lightbulb.fill").font(.system(size: 80)).foregroundColor(AppTheme.primaryColor).scaleEffect(isAnimating ? 1.2 : 1.0).animation(Animation.easeInOut(duration: 1.0).repeatForever(autoreverses: true),value: isAnimating)Text("靈感記錄").font(.largeTitle).fontWeight(.bold).foregroundColor(AppTheme.primaryColor)Text("捕捉每一個閃光的想法").font(.subheadline).foregroundColor(.gray).padding(.top, 4)}}.onAppear {isAnimating = true}}
}#Preview {SplashScreen()
}

在這里插入圖片描述

7. 修改應用入口點

修改YunChangActionApp.swift文件,集成啟動屏幕:

import SwiftUI
import WidgetKit@main
struct YunChangActionApp: App {@StateObject private var inspirationManager = InspirationManager()@State private var isQuickNoteActive = false@Environment(\.scenePhase) private var scenePhase@State private var showSplash = truevar body: some Scene {WindowGroup {ZStack {ContentView().environmentObject(inspirationManager).preferredColorScheme(.light).accentColor(AppTheme.primaryColor).onOpenURL { url in// 處理URL Scheme,用于快速啟動記錄功能if url.scheme == "yunchangaction" && url.host == "quicknote" {isQuickNoteActive = true}}// 條件性顯示啟動屏幕if showSplash {SplashScreen().transition(.opacity).zIndex(1).onAppear {// 2秒后隱藏啟動屏幕DispatchQueue.main.asyncAfter(deadline: .now() + 2) {withAnimation {showSplash = false}}}}}}}
}

8. 創建基本數據模型

創建InspirationNote.swift文件,定義靈感筆記的數據模型:

import SwiftUI// 靈感筆記模型
struct InspirationNote: Identifiable, Codable {var id = UUID()var content: Stringvar createdAt: Datevar isFavorite: Bool = falsevar category: NoteCategory = .generalvar color: NoteColor = .greenvar tags: Set<String> = []
}// 筆記分類
enum NoteCategory: String, Codable, CaseIterable, Identifiable {case general = "通用"case work = "工作"case personal = "個人"case idea = "創意"case todo = "待辦"case study = "學習"case travel = "旅行"case health = "健康"var id: String { self.rawValue }var icon: String {switch self {case .general: return "doc.text"case .work: return "briefcase"case .personal: return "person"case .idea: return "lightbulb"case .todo: return "checklist"case .study: return "book"case .travel: return "airplane"case .health: return "heart"}}
}// 筆記顏色
enum NoteColor: String, Codable, CaseIterable, Identifiable {case green = "綠色"case lightGreen = "淡綠色"case mint = "薄荷色"case teal = "青色"case lime = "青檸色"var id: String { self.rawValue }var color: Color {switch self {case .green: return Color(red: 0.2, green: 0.7, blue: 0.3)case .lightGreen: return Color(red: 0.5, green: 0.8, blue: 0.5)case .mint: return Color(red: 0.4, green: 0.8, blue: 0.7)case .teal: return Color(red: 0.2, green: 0.6, blue: 0.6)case .lime: return Color(red: 0.6, green: 0.8, blue: 0.3)}}
}

代碼解釋

SplashScreen.swift

// @State屬性包裝器用于管理視圖的本地狀態
// 當isAnimating變化時,SwiftUI會自動重新渲染視圖
@State private var isAnimating = false// ZStack用于在z軸方向疊加視圖元素
ZStack {// 設置背景色并忽略安全區域,使背景色填滿整個屏幕AppTheme.backgroundColor.ignoresSafeArea()// VStack用于垂直排列視圖元素VStack(spacing: 20) {// 使用SF Symbols圖標作為燈泡圖標Image(systemName: "lightbulb.fill").font(.system(size: 80)).foregroundColor(AppTheme.primaryColor)// scaleEffect修飾符用于縮放視圖// 根據isAnimating狀態在1.0和1.2之間變化.scaleEffect(isAnimating ? 1.2 : 1.0)// animation修飾符定義動畫效果// easeInOut表示動畫曲線,duration表示動畫持續時間// repeatForever使動畫無限重復,autoreverses使動畫來回播放.animation(Animation.easeInOut(duration: 1.0).repeatForever(autoreverses: true),value: isAnimating  // 監聽這個值的變化來觸發動畫)// 應用標題Text("靈感記錄").font(.largeTitle).fontWeight(.bold).foregroundColor(AppTheme.primaryColor)// 應用副標題Text("捕捉每一個閃光的想法").font(.subheadline).foregroundColor(.gray).padding(.top, 4)}
}
// onAppear在視圖出現時執行閉包
// 這里用于啟動動畫
.onAppear {isAnimating = true
}

YunChangActionApp.swift

// @main標記應用的入口點
@main
struct YunChangActionApp: App {// @StateObject用于創建和管理應用級別的狀態對象// inspirationManager將在整個應用生命周期內保持存在@StateObject private var inspirationManager = InspirationManager()// @State用于管理視圖的本地狀態@State private var isQuickNoteActive = false// @Environment用于訪問環境值// scenePhase表示應用的當前狀態(活躍、非活躍、后臺)@Environment(\.scenePhase) private var scenePhase// 控制是否顯示啟動屏幕@State private var showSplash = truevar body: some Scene {WindowGroup {// ZStack用于疊加ContentView和SplashScreenZStack {ContentView()// 將inspirationManager注入環境,使其在視圖層次結構中可用.environmentObject(inspirationManager)// 設置淺色模式.preferredColorScheme(.light)// 設置強調色.accentColor(AppTheme.primaryColor)// 處理URL Scheme.onOpenURL { url inif url.scheme == "yunchangaction" && url.host == "quicknote" {isQuickNoteActive = true}}// 條件性顯示啟動屏幕if showSplash {SplashScreen()// 設置過渡動畫為淡入淡出.transition(.opacity)// 確保啟動屏幕在最上層.zIndex(1).onAppear {// 延遲2秒后隱藏啟動屏幕DispatchQueue.main.asyncAfter(deadline: .now() + 2) {// 使用動畫效果隱藏啟動屏幕withAnimation {showSplash = false}}}}}}}
}

常見問題和解決方案

1. Xcode版本兼容性問題

問題:使用較舊版本的Xcode可能無法支持最新的SwiftUI功能。

解決方案

  • 升級到最新版本的Xcode
  • 如果無法升級,可以修改代碼以兼容舊版本的SwiftUI
  • 使用條件編譯來處理不同版本的API差異
// 條件編譯示例
#if compiler(>=5.5)
// 使用iOS 15+的API
if #available(iOS 15.0, *) {Text("新API").listRowSeparator(.hidden)
} else {// 兼容iOS 14及更早版本Text("舊API")
}
#else
// 兼容舊版本Swift編譯器
Text("舊API")
#endif

2. 預覽功能不工作

問題:SwiftUI預覽有時會停止工作或顯示錯誤。

解決方案

  • 重啟Xcode預覽(點擊預覽窗口中的刷新按鈕)
  • 確保預覽代碼正確(檢查#Preview宏的使用)
  • 清理項目(Product > Clean Build Folder)
  • 重啟Xcode
  • 檢查是否有編譯錯誤

3. 環境對象注入問題

問題:在視圖中無法訪問通過environmentObject注入的對象。

解決方案

  • 確保在視圖層次結構的頂層正確注入了環境對象
  • 檢查是否正確使用了@EnvironmentObject屬性包裝器
  • 確保環境對象類型匹配
// 正確注入環境對象
ContentView().environmentObject(inspirationManager)// 在子視圖中正確訪問環境對象
struct ChildView: View {@EnvironmentObject var inspirationManager: InspirationManagervar body: some View {Text("共有\(inspirationManager.notes.count)條筆記")}
}

4. 啟動屏幕閃爍問題

問題:啟動屏幕可能會在顯示后立即消失或閃爍。

解決方案

  • 確保延遲足夠長的時間再隱藏啟動屏幕
  • 使用withAnimation包裝狀態變化,使過渡更平滑
  • 添加適當的過渡動畫
// 平滑過渡的示例
.onAppear {// 立即開始動畫isAnimating = true// 延遲2秒后隱藏啟動屏幕DispatchQueue.main.asyncAfter(deadline: .now() + 2) {withAnimation(.easeOut(duration: 0.5)) {showSplash = false}}
}

本章小結

在本章中,我們完成了YunChangAction靈感記錄應用的基礎搭建工作:

  1. 了解了靈感記錄應用的概念和YunChangAction的核心功能
  2. 學習了SwiftUI框架的基本概念和MVVM架構模式
  3. 配置了開發環境并創建了項目
  4. 設計了合理的項目文件結構
  5. 實現了應用的主題設置和啟動屏幕
  6. 創建了基本的數據模型

這些工作為后續開發各個功能模塊奠定了堅實的基礎。在接下來的章節中,我們將逐步實現靈感記錄、AI輔助分類、多視圖模式等核心功能。

課后練習

  1. 修改主題色系:嘗試修改AppTheme.swift文件中的顏色定義,創建自己喜歡的配色方案,并觀察應用外觀的變化。
  2. 增強啟動屏幕:為SplashScreen添加更多動畫效果,如淡入淡出、旋轉或波浪效果,使啟動體驗更加生動。
  3. 擴展數據模型:為InspirationNote模型添加新的屬性,如優先級、提醒時間或位置信息,并思考這些屬性如何影響應用的功能。
  4. 實現深色模式:修改YunChangActionApp.swift,使應用支持自動切換深色模式,并為深色模式定義適當的顏色方案。
  5. 研究SwiftUI生命周期:探索@Environment(.scenePhase)的用法,實現當應用進入后臺時自動保存數據的功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71393.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71393.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71393.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025.3.3總結

周一這天&#xff0c;我約了績效教練&#xff0c;主要想了解專業類績效的考核方式以及想知道如何拿到一個更好的績效。其他的崗位并不是很清楚&#xff0c;但是專業類的崗位&#xff0c;目前采取絕對考核&#xff0c;管理層和專家崗采取相對考核&#xff0c;有末尾淘汰。 通過…

FastGPT 源碼:基于 LLM 實現 Rerank (含Prompt)

文章目錄 基于 LLM 實現 Rerank函數定義預期輸出實現說明使用建議完整 Prompt 基于 LLM 實現 Rerank 下邊通過設計 Prompt 讓 LLM 實現重排序的功能。 函數定義 class LLMReranker:def __init__(self, llm_client):self.llm llm_clientdef rerank(self, query: str, docume…

LeetCode 1745.分割回文串 IV:動態規劃(用III或II能直接秒)

【LetMeFly】1745.分割回文串 IV&#xff1a;動態規劃&#xff08;用III或II能直接秒&#xff09; 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-iv/ 給你一個字符串 s &#xff0c;如果可以將它分割成三個 非空 回文子字符串&#xff0c;…

25年3月5日

1.思維導圖 2.不太會 #include "head.h" int main(int argc, const char *argv[]) {int fdopen("../xiaoxin.bmp","O_RDONLY");if(fd-1)printf("open error");//大小struct stat st;if(stat("…

全球首創!微軟發布醫療AI助手,終結手寫病歷時代

今天凌晨&#xff0c;微軟發布了醫療界首個用于臨床工作流程的AI助手Microsoft Dragon Copilot。 Dragon Copilot是基于語音文本的混合架構&#xff0c;能夠將醫生的語音或臨床口述內容實時轉換為文本。例如&#xff0c;醫生可以通過語音輸入患者的病歷信息、醫囑或診斷結果&a…

[自動駕駛-傳感器融合] 多激光雷達的外參標定

文章目錄 引言外參標定原理ICP匹配示例參考文獻 引言 多激光雷達系統通常用于自動駕駛或機器人&#xff0c;每個雷達的位置和姿態不同&#xff0c;需要將它們的數據統一到同一個坐標系下。多激光雷達外參標定的核心目標是通過計算不同雷達坐標系之間的剛性變換關系&#xff08…

Blazor-路由模板(下)

路由約束 類型約束 我們這里使用{id:int}限制路由&#xff0c;id為int類型&#xff0c;并且路由參數 id 對應的 Id 屬性也必須是 int 類型。我們試試能否正常訪問 page "/demoPage/{id:int}" <h3>demoPage</h3> <h2>路由參數Id&#xff1a;Id&l…

多線程-JUC源碼

簡介 JUC的核心是AQS&#xff0c;大部分鎖都是基于AQS擴展出來的&#xff0c;這里先結合可重入鎖和AQS&#xff0c;做一個講解&#xff0c;其它的鎖的實現方式也幾乎類似 ReentrantLock和AQS AQS的基本結構 AQS&#xff0c;AbstractQueuedSynchronizer&#xff0c;抽象隊列…

通過多線程獲取RV1126的AAC碼流

目錄 一RV1126多線程獲取音頻編碼AAC碼流的流程 1.1AI模塊的初始化并使能 1.2AENC模塊的初始化 ???????1.3綁定AI模塊和AENC模塊 ???????1.4多線程獲取每一幀AAC碼流 ???????1.5每個AAC碼流添加ADTSHeader頭部 ???????1.6寫入具體每一幀AAC的…

JVM常用概念之對象初始化的成本

在JVM常用概念之新對象實例化博客中我講到了對象的實例化&#xff0c;主要包含分配&#xff08;TLAB&#xff09;、系統初始化、用戶初始化&#xff0c;而我在JVM常用概念之線程本地分配緩沖區&#xff08;ThreadLocal Allocation Buffer&#xff0c;TLAB&#xff09;博客中也講…

java后端開發day27--常用API(二)正則表達式爬蟲

&#xff08;以下內容全部來自上述課程&#xff09; 1.正則表達式&#xff08;regex&#xff09; 可以校驗字符串是否滿足一定的規則&#xff0c;并用來校驗數據格式的合法性。 1.作用 校驗字符串是否滿足規則在一段文本中查找滿足要求的內容 2.內容定義 ps&#xff1a;一…

AI---DevOps常備工具(?AI-Integrated DevOps Essential Tools)

AI---DevOps常備工具 技術領域正在迅速發展&#xff0c;隨著我們步入 2025 年&#xff0c;有一點是明確的&#xff1a;人工智能&#xff08;AI&#xff09;不再只是一個流行詞&#xff0c;它是每個 DevOps 工程師都需要掌握的工具。隨著云環境的復雜性增加、對更快部署的需求以…

Pytorch中的主要函數

目錄 一、torch.manual_seed(seed)二、torch.cuda.manual_seed(seed)三、torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)四、給大家寫一個常用的自動選擇電腦cuda 或者cpu 的小技巧五、torch.version.cuda&#xff1b;torch.bac…

Spring Boot中對接Twilio以實現發送驗證碼和驗證短信碼

Twilio介紹 Twilio是一家提供云通信服務的公司&#xff0c;旨在幫助開發者和企業通過簡單的API實現各種通信功能。以下是Twilio的一些主要特點和服務介紹&#xff1a; 核心功能 短信服務&#xff08;SMS&#xff09;&#xff1a;允許用戶通過API發送和接收短信&#xff0c;支…

VSCode詳細安裝步驟,適用于 Windows/macOS/Linux 系統

以下是 Visual Studio Code (VSCode) 的詳細安裝步驟&#xff0c;適用于 Windows/macOS/Linux 系統&#xff1a; VSCode 的詳細安裝步驟 一、Windows 系統安裝1. 下載安裝包2. 運行安裝程序3. 驗證安裝 二、macOS 系統安裝1. 方法一&#xff1a;官網下載安裝包2. 方法二&#x…

基于PyTorch的深度學習3——基于autograd的反向傳播

反向傳播&#xff0c;可以理解為函數關系的反向傳播。

設備管理系統功能與.NET+VUE(IVIEW)技術實現

在現代工業和商業環境中&#xff0c;設備管理系統&#xff08;Equipment Management System&#xff0c;簡稱EMS&#xff09;是確保設備高效運行和維護的關鍵工具。本文采用多租戶設計的設備管理系統&#xff0c;基于.NET后端和VUE前端&#xff08;使用IVIEW UI框架&#xff09…

PHP之特性

在你有別的編程語言的基礎下&#xff0c;你想學習PHP&#xff0c;可能要了解的PHP特有的東西。 定界符 使用<<<TT(可以是任意字符&#xff0c;但是不可以在別的地方使用過)和TT&#xff0c;會解析html格式和變量&#xff0c;如果在<<<后面加上單引號就會不…

9-Agent大模型中工作流的使用方法分析

目錄 關鍵詞 摘要 速覽 配置插件進行新聞內容查找的工作流設置 自動化調用用戶輸入變量的插件配置教程 配置大模型以整理并簡要輸出新聞內容 新聞內容總結功能調試與優化 搭建與發布工作流優化布局的流程詳解 創建和配置智能體工作流程 調試頁面與工作流配置演示 思…

記一次:泛微OA集成Mybatis后 insert/update執行成功,但未真正插入或修改數據

背景&#xff1a;通過Mybatis插入數據或更新數據&#xff0c;顯示插入/更新成功&#xff0c;查詢數據庫&#xff0c;發現并未插入成功、數據也沒更新成功。下面是Mapper文件 public interface TestOrmMapper {int insertByTest(Param("requestId") Integer requestI…