gpt4 book ai didi

iOS 14 Beta - Swift UI 中的核心数据错误 : No NSEntityDescriptions in any model claim the NSManagedObject subclass

转载 作者:行者123 更新时间:2023-12-01 19:30:55 25 4
gpt4 key购买 nike

我正在使用新的 SwiftUI App 协议(protocol)并通过 @Environment 传递我的核心数据 NSPersistentContainer:

        final class PersistentStore: ObservableObject {
static let shared = PersistentStore()
let persistentContainer: NSPersistentContainer
private init() {
self.persistentContainer = {
let container = NSPersistentContainer(name: "SillyModel")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
}
func saveContext() {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}
}


@main
struct SillyApp: App {

@Environment(\.scenePhase) private var scenePhase

var body: some Scene {
WindowGroup {
NavigationView {
ProjectGridView()
}
.environment(\.managedObjectContext, PersistentStore.shared.persistentContainer.viewContext)
}
}
}
然后我在 ProjectGridView 中使用 @Enviroment 从环境中获取 managedObjectContect,尝试 @FetchRequest 并显示一个新的 LazyVGrid:
struct ProjectGridView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(
entity: Project.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Project.title, ascending: true)
]
) var projects: FetchedResults<Project>

let columns = [GridItem(.adaptive(minimum: 80.0))]

var body: some View {
return ScrollView {
LazyVGrid(columns: columns, spacing: 20) {
ForEach(projects, id:\.title) { (project: Project) in
Text("\(project.title ?? "")")
}
}
.padding(.horizontal)
}
}
}
我收到此错误:
[error] error: No NSEntityDescriptions in any model claim the NSManagedObject subclass 'Project' so +entity is confused.  Have you loaded your NSManagedObjectModel yet ?
我尝试编写代码来保存新的 Project(),甚至让 @FetchRequest 在其他地方工作。我猜这可能与 LazyVGrid 的“懒惰”部分有关?有任何想法吗?

最佳答案

好的,从 Apple Developer 论坛中找到了一个修复程序。这似乎只是一个测试版错误:
要修复,请为您的模型类创建一个扩展:

import Foundation
import CoreData

extension Project {
class func swiftUIFetchRequest() -> NSFetchRequest<Project> {
let request = NSFetchRequest<Project>(entityName: "Project")
request.sortDescriptors = [NSSortDescriptor(keyPath: \Project.title, ascending: true)] /* You can add custom sort descriptors here */
return request
}
}
然后像这样调用@FetchRequest:
@FetchRequest(fetchRequest: Project.swiftUIFetchRequest()) var projects: FetchedResults<Project>
感谢 Apple Developer 论坛中发现这一点的人。

关于iOS 14 Beta - Swift UI 中的核心数据错误 : No NSEntityDescriptions in any model claim the NSManagedObject subclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62852413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com