首页 > 解决方案 > Core Data 应用程序在启动时关闭“自愿退出”

问题描述

我在 SwiftUI 和 CoreData 中开始了一个新项目。一旦我将 Transformable 添加到我的父/子数据模型中的子记录,应用程序就会启动并立即关闭。当我尝试使用预览时,我现在得到 Error Domain=FBProcessExit Code=1 "The process exited voluntarily." UserInfo={BSErrorCodeDescription=自愿,NSLocalizedFailureReason=进程自愿退出。}在应用程序的所有视图上。谁能帮我弄清楚如何调试这个?

我包括模型代码和变压器,以防这有帮助:

import Foundation
import CoreData
import UIKit


extension Event {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Event> {
        return NSFetchRequest<Event>(entityName: "Event")
    }

    @NSManaged public var cardFrontImage: UIImage?
    @NSManaged public var event: String?
    @NSManaged public var recipient: Recipient?

}

extension Event : Identifiable {

}

变压器代码:

import Foundation
import UIKit

class ImageTransformer: ValueTransformer {
    
    override class func transformedValueClass() -> AnyClass {
        return NSData.self
    }
    
    override class func allowsReverseTransformation() -> Bool {
        return true
    }
    
    override func reverseTransformedValue(_ value: Any?) -> Any? {
        autoreleasepool{
            guard let data = value as? Data else {
                return nil
            }
            
            return UIImage(data: data)
        }
    }
    
    override func transformedValue(_ value: Any?) -> Any? {
        autoreleasepool{
            guard let image = value as? UIImage else {
                return nil
            }
            
            return image.jpegData(compressionQuality: 1.0)
        }
    }
}

以及我在@main 中设置变压器的位置

@main
struct HolidayCardApp: App {
    @Environment(\.scenePhase) private var scenePhase
    let context = PersistentCloudKitContainer.persistentContainer.viewContext
    
    static let doInitialize: Void = {
        ValueTransformer.setValueTransformer(ImageTransformer(), forName: NSValueTransformerName("ImageTransformer"))
        // register transformers here
    }()
    
    static func main() {
        HolidayCardApp.doInitialize
    }
  var body: some Scene {
  // CODE
  }
 }

标签: swiftxcodecore-data

解决方案


通过将 ValueTransformer 的初始化移到我的 PersistentCloudKit 设置中解决了这个问题。


推荐阅读