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

时间:2020-06-09 16:35:59

标签: core-data swiftui

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

CrashOnLaunchError:AppName应用在启动时崩溃

更新预览时,应用“ AppName”崩溃。在〜/ Library / Logs / DiagnosticReports中查找崩溃日志以获取更多详细信息。

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

Error Domain = FBSOpenApplicationServiceErrorDomain代码= 1“请求 打开“ com.company.AppName”失败。” UserInfo = {BSErrorCodeDescription = RequestDenied, NSLocalizedDescription =打开“ com.company.AppName”的请求 失败。,NSUnderlyingError = 0x7f89753f7aa0 {Error Domain = SketchBoard 代码= 1“应用程序无法启动” UserInfo = {NSLocalizedDescription =应用程序无法启动, NSLocalizedFailureReason =该操作无法完成。 交易失败。子交易失败: (子级 交易),NSUnderlyingError = 0x7f8975356fd0 {错误 Domain = BSTransactionError Code = 1“交易失败。孩子 事务失败:(子交易)” UserInfo = {NSLocalizedFailureReason =交易失败。儿童 事务失败:(子事务),precipitating-error =错误 Domain = BSTransactionError Code = 1“交易失败。孩子 事务失败:(子级 交易)“ UserInfo = {NSLocalizedFailureReason =交易失败。 子事务失败: (子交易),precipitating-error =错误 Domain = BSTransactionError Code = 1“交易失败。场景更新 失败(场景更新失败)” UserInfo = {NSLocalizedFailureReason =交易失败。场景更新 失败(场景更新失败),error-reason =场景更新失败, error-description =场景更新失败, transaction = }, 错误原因=子事务,错误描述=子事务 失败:, transaction = }, 错误原因=子事务,错误描述=子事务 失败:, transaction = }}}}, FBSOpenApplicationRequestID = 0xddf3,NSLocalizedFailureReason = The 服务代表拒绝了该请求 (SketchBoard.SketchBoardSystemService)。}

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

AppLaunchTimeoutError:无法启动应用程序“ 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,executableSubpath:“ AppName”,版本:AnyHashable(9781),signingInformation:可选(UVPreviewPipeline.CodeSigningInformation(标识符:Optional(“ com.company .AppName“),标识:无,hasGetTaskAllow:false,isSandboxed:false)))”“在合理的时间

应用程序“ PreviewAgentBundle(标识符:“ com.company.AppName”,网址:file:///Users/UserName/Library/Developer/Xcode/DerivedData/AppName%3F-fnttuytzfpshkcdpkeevdewzrypc/Build/Intermediates.noindex/Previews /Appname%3F/Products/Debug-iphonesimulator/AppName%3F.app,executableSubpath:“AppName”,版本:AnyHashable(9781),signingInformation:可选(UVPreviewPipeline.CodeSigningInformation(标识符:Optional(“ com.company.AppName”)) ,身份:零,hasGetTaskAllow:假,isSandboxed:假)))”在15秒钟内未在“ iPhone 11 Pro Max”上启动。

捆绑包标识符:com.company.AppName 设备UDID:UUID 请求UUID:UUID screenID: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()
    }
}

PostCodeView


import Foundation
import SwiftUI

struct PostCodeView: View {
    var postcode: String = ""
    var body: some View {
        Text(postcode)
    }
}

struct PostCodeView_Previews: PreviewProvider {
    static var previews: some View {
        PostCodeView(postcode: "WD6 3PU")
    }
}

和PostCodeCore

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
    }
}

和我的XCDataModel看起来像这样 https://imgur.com/a/xOV5U3f

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

0 个答案:

没有答案