swift - 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
}
}
解决方案
通过将 ValueTransformer 的初始化移到我的 PersistentCloudKit 设置中解决了这个问题。
推荐阅读
- sql-server - sys.time_zone_info 的 current_utc_offset 分钟格式
- c# - 如何根据条目中发现的时差拆分 DateTime 列表?
- node.js - 如何在文档 Firebase Function Express 上创建子集合?
- .net - 使用 automapper 可以在单独的查询中映射子集合
- reactjs - 用于 NPM 的 React 独立库
- java - 使用 jdbc 运行 DB2 命令失败
- c - 在 C 中使用带有指针的 typedef
- xamarin.forms - 使用带有 xamarin 形式的蓝牙打印文本
- r - 初始 DT 处理的网络请求缓慢
- key - 公钥比特币公式的私钥?蟒蛇3.0?