首页 > 解决方案 > 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”函数。但是主应用程序和小部件将数据存储在不同的容器中。

我的应用

标签: xcodecore-dataswiftuiframeworkswidget

解决方案


推荐阅读