xcode - Xcode 自定义框架以不同方式存储小部件和主应用程序的数据
问题描述
我的自定义框架中的核心数据分别为其小部件和主应用程序存储数据。小部件不会加载从主应用程序存储的数据。是否有任何解决方案可以从主应用程序存储的小部件中获取数据?
框架中的代码:
import Foundation
import CoreData
public class CoreDataManager {
public static let shared = CoreDataManager()
let identifier = "com.Appnap.DataBaseFramework"
let model = "CoreDataModel"
lazy var persistentContainer: NSPersistentContainer = {
let messageKitBundle = Bundle(identifier: self.identifier)
let modelURL = messageKitBundle!.url(forResource: self.model, withExtension: "momd")!
let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL)
let container = NSPersistentContainer(name: self.model, managedObjectModel: managedObjectModel!)
container.loadPersistentStores { (storeDescription, error) in
if let err = error{
fatalError("❌ Loading of store failed:\(err)")
}
}
return container
}()
//MARK: - Append data
public func createTask(task: String){
let context = persistentContainer.viewContext
let contact = NSEntityDescription.insertNewObject(forEntityName: "Task", into: context) as! Task
contact.id = UUID()
contact.taskdescription = task
do {
try context.save()
print("✅ Person saved succesfuly")
} catch let error {
print("❌ Failed to create Person: \(error.localizedDescription)")
}
}
//MARK: - Fetch data
public func fetch() -> [String] {
var data = [String]()
let context = persistentContainer.viewContext
let fetchRequest = NSFetchRequest<Task>(entityName: "Task")
do{
let allTask = try context.fetch(fetchRequest)
for (_,task) in allTask.enumerated() {
print(task.taskdescription!)
data.append(task.taskdescription!)
}
}catch let fetchErr {
print("❌ Failed to fetch Person:",fetchErr)
}
return data
}
}
我刚刚从主应用程序和小部件中调用了“createTask”和“fetch”函数。但是主应用程序和小部件将数据存储在不同的容器中。
解决方案
推荐阅读
- swift - 如何为 TimeInterval 创建格式化程序以打印分钟、秒和毫秒
- xcode - 我注意到在 Xcode 13 中,有时在项目中包含可交付成果的“产品”组有时是不可见的。有什么解决办法吗?
- python - 将 2 列数据框转换为多级分层数据框
- apollo - 身份验证和网络套接字
- django - 如何在 django 中使用 CreateAPIView 创建用户对象
- haskell - 理解 Monad 变形金刚的困难
- node.js - MongoDB collection.aggrerate 只接受两个参数
- html - 具有 position:absolute 的块元素不使用全宽。为什么?
- terraform - 在数据源读取函数中转换 Terraform TypeSet
- javascript - 如何在javascript中检查默认的第三个单选按钮