Core data 线程1:“;NSFetchedResultsController的实例需要具有排序描述符“的获取请求”;

Core data 线程1:“;NSFetchedResultsController的实例需要具有排序描述符“的获取请求”;,core-data,swiftui,Core Data,Swiftui,我正在创建一个简单的核心数据应用程序,代码上没有错误,但在预览中运行或在物理设备上运行时,它会在启动时崩溃。日志是 CrashonLaunchorr:AppName应用程序在启动时崩溃 应用程序“AppName”在更新预览时崩溃。有关更多详细信息,请在~/Library/logs/DiagnosticReports中查找崩溃日志 在物理设备上运行时,在类定义的AppDelegate中 xcode抛出线程1:“NSFetchedResultsController的实例需要具有排序描述符的获取请求”

我正在创建一个简单的核心数据应用程序,代码上没有错误,但在预览中运行或在物理设备上运行时,它会在启动时崩溃。日志是

CrashonLaunchorr:AppName应用程序在启动时崩溃

应用程序“AppName”在更新预览时崩溃。有关更多详细信息,请在~/Library/logs/DiagnosticReports中查找崩溃日志

在物理设备上运行时,在类定义的AppDelegate中 xcode抛出线程1:“NSFetchedResultsController的实例需要具有排序描述符的获取请求”

错误域=FBSOPenapplicationService错误域代码=1“请求 打开“com.company.AppName”失败 UserInfo={BSErrorCodeDescription=RequestDenied, NSLocalizedDescription=打开“com.company.AppName”的请求 失败,NSUnderlyingError=0x7f89753f7aa0{错误域=SketchBoard 代码=1“应用程序未能启动” UserInfo={NSLocalizedDescription=应用程序未能启动, NSLocalizedFailureReason=无法完成该操作。 事务失败。子事务失败: (孩子 事务),NSUnderlyingError=0x7f8975356fd0{Error 域=BSTransactionErrorCode=1“事务失败。子项 事务失败:(子事务) UserInfo={NSLocalizedFailureReason=事务失败。子级 事务失败:(子事务),沉淀错误=错误 域=BSTransactionErrorCode=1“事务失败。子项 事务失败:(子项) 事务)“UserInfo={NSLocalizedFailureReason=事务失败。 子事务失败: (子事务),沉淀错误=错误 Domain=BSTransactionError Code=1“事务失败。场景更新 失败(场景更新失败)” UserInfo={NSLocalizedFailureReason=事务失败。场景更新 失败(场景更新失败),错误原因=场景更新失败, 错误描述=场景更新失败, 事务=}, 错误原因=子事务,错误描述=子事务 失败:, 事务=}, 错误原因=子事务,错误描述=子事务 失败:, 事务=}}}, FBSOpenApplicationRequestID=0xddf3,NSLocalizedFailureReason= 请求被服务代理拒绝 (SketchBoard.SketchBoardSystemService)。}

重新启动计算机和XCODE后,会显示另一个错误

AppLaunchTimeoutError:无法启动应用程序“PreviewGetBundle”(标识符:“com.company.AppName”),url:file:///Users/UserName/Library/Developer/Xcode/DerivedData/AppName%3F-fnttuytzfpshkcdpkeevdewzrypc/Build/Intermediates.noindex/Previews/AppName%3F/Products/Debug iphonesimulator/AppName%3F.app,可执行子路径:“AppName”“,版本:AnyHashable(9781),签名信息:可选(UVPreviewPipeline.CodeSigningInformation(标识符:可选(“com.company.AppName”),标识:nil,hasgetaskallow:false,isSandboxed:false))”,在合理的时间内”

应用程序“PreviewAgentBundle”(标识符:“com.company.AppName”),url:file:///Users/UserName/Library/Developer/Xcode/DerivedData/AppName%3F-fnttuytzfpshkcdpkeevdewzrypc/Build/Intermediates.noindex/Previews/Appname%3F/Products/Debug iphonesimulator/Appname%3F.app,可执行子路径:“Appname”,版本:AnyHashable(9781),签名信息:可选(UVPreviewPipeline.CodeSigningInformation(标识符:可选(“com.company.AppName”)、标识:nil、Hasgetaskallow:false、isSandboxed:false)))在15秒内未在“iPhone 11 Pro Max”上启动

捆绑包标识符:com.company.AppName 设备UDID:UUID 请求UUID:UUID 屏幕ID:0

我有3页

内容视图

import SwiftUI

struct ContentView: View {
    
    @Environment(\.managedObjectContext) var managedObjectContext
    @FetchRequest(fetchRequest: PostCodeCore.getPostcode()) var postCodes:FetchedResults<PostCodeCore>
    
    @State private var enteredPostcode = ""
    var body: some View {
        NavigationView {
       
           
            
                Button(action: {
                    
                    TextField("Postcode", text: self.$enteredPostcode)
                    let postCodeCore = PostCodeCore(context: self.managedObjectContext)
                    postCodeCore.postcodeObject = self.enteredPostcode
                    do {
                        try self.managedObjectContext.save()
                    }catch{
                        print(error)
                    }
                    
                    self.enteredPostcode = ""
                    
                }) {
                    Text("Proceed")
                }
            ForEach(self.postCodes) {PostCodeCore in
                PostCodeView(postcode: PostCodeCore.postcodeObject!)
            }
           
          
          
        }.navigationBarTitle("Hello")
       
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
和邮政编码

import Foundation
import CoreData

public class PostCodeCore:NSManagedObject, Identifiable {
    @NSManaged public var postcodeObject:String?
}

extension PostCodeCore {
    static func getPostcode() -> NSFetchRequest<PostCodeCore> {
        let request:NSFetchRequest<PostCodeCore> = PostCodeCore.fetchRequest() as! NSFetchRequest<PostCodeCore>
    
        return request
    }
}
<代码>导入基础 导入CoreData 公共类邮政编码核心:NSManagedObject,可识别{ @NSManaged public var Postcode对象:字符串? } 扩展后代码{ 静态func getPostcode()->NSFetchRequest{ 让请求:NSFetchRequest=PostCodeCore.fetchRequest()作为!NSFetchRequest 退货申请 } } 我的XCDataModel看起来像这样

任何帮助都将不胜感激,
谢谢

相关:谢谢,我不认为我需要,因为没有数据将被排序,只有1个值被存储重复相关:谢谢,我不认为我需要,因为没有数据将被排序,只有1个值被存储重复相关:谢谢,我不认为我需要,因为没有数据将被排序,只有1个值被存储重复
import Foundation
import CoreData

public class PostCodeCore:NSManagedObject, Identifiable {
    @NSManaged public var postcodeObject:String?
}

extension PostCodeCore {
    static func getPostcode() -> NSFetchRequest<PostCodeCore> {
        let request:NSFetchRequest<PostCodeCore> = PostCodeCore.fetchRequest() as! NSFetchRequest<PostCodeCore>
    
        return request
    }
}