我有一個簡單的 Core Data macOS 應用程式,其資料模型如下:
Entity:
Data
Attributes:
text String
starred Boolean
date Date
我正在嘗試從我創建的自定義選單中訪問資料,對其進行迭代并(將來)將其保存到磁盤。
我一直在嘗試將代碼直接添加到創建為的選單項中:
@main
struct My_DataApp: App {
let persistenceController = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.frame(minWidth: 560, maxWidth: .infinity,
minHeight: 300, maxHeight: .infinity)
.onAppear {
NSWindow.allowsAutomaticWindowTabbing = false
}
}
.windowToolbarStyle(UnifiedWindowToolbarStyle(showsTitle: false))
.commands{
CommandGroup(after: CommandGroupPlacement.newItem) {
Button("Export Data") {
@FetchRequest(entity: Data.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Data.date, ascending: false)], animation: .default)
var DataItems: FetchedResults<Data>
for data in DataItems {
print("\(String(describing: data.text))")
}
}
}
}
}
}
當然 Xcode 抱怨:

我理解錯誤,但我不知道如何考慮從選單訪問資料。
我在 SO 中看到了一些關于相同錯誤的帖子,我嘗試將代碼添加到該.onAppear部分,但那里發生了同樣的錯誤。
謝謝你的幫助。
uj5u.com熱心網友回復:
您可以NSFetchRequest直接使用并通過視圖背景關系執行它,例如
Button("Export Data") {
let fetchRequest = Data.fetchRequest()
// .. set up parameters
let context = self.persistenceController.container.viewContext
if let result = try? context.fetch(fetchRequest) {
for data in result {
print("\(String(describing: data.text))")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494335.html
