gpt4 book ai didi

core-data - 在独立的 watchOS 应用上实现核心数据

转载 作者:行者123 更新时间:2023-12-04 17:32:23 26 4
gpt4 key购买 nike

据我所知,我们可以在 Apple Watch 应用上使用 Core Data。因此,独立的 watchOS 应用程序可以拥有自己的持久存储。
但是当我们为 watchOS 应用创建项目时,没有选择使用核心数据(就像我们为 iOS 应用创建项目时)

那么,如何在独立的 watchOS 应用上实现 Core Data 呢?

我已经从 iOS 应用程序(使用 Core Data)复制了这段代码,并将其粘贴到我的独立 SwiftUI watchOS 应用程序的 ExtensionDelegate

 // MARK: - Core Data stack

lazy var persistentContainer: NSPersistentContainer = {
/*
The persistent container for the application. This implementation
creates and returns a container, having loaded the store for the
application to it. This property is optional since there are legitimate
error conditions that could cause the creation of the store to fail.
*/
let container = NSPersistentContainer(name: "CoreDataToDo")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.

/*
Typical reasons for an error here include:
* The parent directory does not exist, cannot be created, or disallows writing.
* The persistent store is not accessible, due to permissions or data protection when the device is locked.
* The device is out of space.
* The store could not be migrated to the current model version.
Check the error message to determine what the actual problem was.
*/
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()

// MARK: - Core Data Saving support

func saveContext () {
let context = persistentContainer.viewContext
if context.hasChanges {
do {
try context.save()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
}

那么接下来我该怎么做呢?
还是我已经做错了?

请帮我。我一直在努力寻找如何做到这一点。但是我找不到任何好的解决方案,因为以前没有独立的 watchOS 应用程序,因此大多数开发人员没有为 watchOS 应用程序创建单独的持久存储。
所以请帮助我。
谢谢。

最佳答案

你需要确保你有一个 xcdatamodeld文件也是如此,那么你应该非常好。查看我对 this question 的回答了解如何将您的托管对象上下文传递给 View s 以及如何正确设置 WKHostingController子类。

关于core-data - 在独立的 watchOS 应用上实现核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58270823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com