首页 > 解决方案 > 获取请求“无法识别的选择器”错误

问题描述

我有两个实体,一个叫做项目,一个叫做任务,项目可以有很多任务。我有一个获取请求,它应该获取与项目关联的所有任务,但是在点击项目以移动到包含项目任务的视图时出现此错误:

Thread 1: Exception: "-[__NSConcreteUUID longLongValue]: unrecognized selector sent to instance 0x600002969b20"

这是我的两门课:

extension ProjectItem {
    @NSManaged public var projectId: UUID
    @NSManaged public var projectTitle: String
    @NSManaged public var task: NSSet
}

extension TaskItem {
    @NSManaged public var id: UUID
    @NSManaged public var isComplete: Bool
    @NSManaged public var title: String
    @NSManaged public var project: ProjectItem?
}

这是我的视图和获取请求:

struct ProjectDetail: View {
    @Environment(\.managedObjectContext) var managedObjectContext
    @ObservedObject var projectItem: ProjectItem
    
    private var tasksInProject: FetchRequest<TaskItem>
    private var taskItems: FetchedResults<TaskItem> { tasksInProject.wrappedValue }
    
    init(_ project:ProjectItem) {
        self.projectItem = project


        self.tasksInProject = FetchRequest(
            entity: TaskItem.entity(),
            sortDescriptors: [NSSortDescriptor(keyPath: \TaskItem.createdDate, ascending: false)],
            predicate: NSPredicate(format: "project == %@", project.projectId as CVarArg))
    }

...

var body: some View {
    ForEach(taskItems, id:\.id) { taskItem in
        Text("\(taskItem.title)")
    }
}

请帮忙!一个多星期以来,我一直在为此拔头发。

标签: iosswiftswiftui

解决方案


TaskItem.projectis type of ProjectItem?not UUID,所以试试

self.tasksInProject = FetchRequest(
    entity: TaskItem.entity(),
    sortDescriptors: [NSSortDescriptor(keyPath: \TaskItem.createdDate, ascending: false)],
    predicate: NSPredicate(format: "project.projectId == %@", project.projectId as CVarArg))

推荐阅读