首页 > 解决方案 > SwiftUI Core Data WatchOS 中的这个错误是什么意思?

问题描述

我有一个处理核心数据的 iOS 应用程序。现在我想创建一个具有一些 iOS 视图的 watchOS 应用程序。

我的目标是让用户在 Watch 上创建一个 CoreData 对象。

如果我在 CoreData 文件的目标成员中选择监视扩展并为我的对象创建一个 FetchRequest 一切正常,直到我打开该视图。如果我打开视图,我会收到以下错误代码:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

我已经读到有一些针对 UserDefaults 的解决方案,但我还没有为 CoreData 找到任何解决方案。

有谁知道如何解决这个问题以及如何正确获取核心数据?

编辑:CoreData 文件:通过 XCode12 生成

import CoreData

struct PersistenceController {
    static let shared = PersistenceController()

    static var preview: PersistenceController = {
        let result = PersistenceController(inMemory: true)
        let viewContext = result.container.viewContext
        
        do {
            try viewContext.save()
        } catch {
            
            let nsError = error as NSError
            fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
        }
        return result
    }()

    let container: NSPersistentCloudKitContainer
    
    init(inMemory: Bool = false) {
        container = NSPersistentCloudKitContainer(name: "Fitness")
        
        if inMemory {
            container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null")
        }
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
    }
}

手表扩展中的获取请求

@Environment(\.managedObjectContext) var viewContext

@FetchRequest(
        entity: Item.entity(),
        sortDescriptors: [NSSortDescriptor(keyPath: \Item.name, ascending: false)]
    ) var Itemlist: FetchedResults<Item>
    

我与手表扩展共享了所有相关文件。

标签: swiftiphonexcodecore-datawatchos

解决方案


推荐阅读