Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用相同CoreData的两个iOS应用程序_Ios_Swift_Xcode_Core Data - Fatal编程技术网

使用相同CoreData的两个iOS应用程序

使用相同CoreData的两个iOS应用程序,ios,swift,xcode,core-data,Ios,Swift,Xcode,Core Data,用例: 应用程序A具有CoreData模型。它可以读取或写入数据库 应用程序B现在应该能够从相同的CoreData读取数据 已尝试: 对于应用程序A,我有一个自定义类nscustompersistentcainer.swift class NSCustomPersistentContainer : NSPersistentContainer { override open class func defaultDirectoryURL() -> URL { var sto

用例:

  • 应用程序A具有CoreData模型。它可以读取或写入数据库

  • 应用程序B现在应该能够从相同的CoreData读取数据

  • 已尝试:

    对于应用程序A,我有一个自定义类
    nscustompersistentcainer.swift

    class NSCustomPersistentContainer : NSPersistentContainer {
    
      override open class func defaultDirectoryURL() -> URL {
    
        var storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.identifier")
        storeURL = storeURL?.appendingPathComponent("MyModel.sqlite")
    
        return storeURL!
      }
    }
    
    并且,
    AppDelegate.swift
    带有:

    lazy var persistentContainer: NSPersistentContainer = {
        
        let container = NSCustomPersistentContainer(name: "MyModel")
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()
    
    这将创建一个我可以在应用程序a中读取或写入的数据库

    现在,我如何从应用程序B访问该数据库?我看到很多关于应用程序和扩展程序之间共享容器的QA,但是我如何处理两个应用程序呢


    谢谢您的建议。

    我删除了我的答案,因为您已经在使用应用程序组。是的,在本例中,扩展和应用与2个应用相同,因为它们各自有一个单独的容器,然后使用共享组容器共享数据。因此,你的第二个应用程序只需要做与第一个应用程序相同的事情:加入同一个组,然后读/写同一个coredataI删除了我的答案,因为你已经在使用应用程序组了。是的,在本例中,扩展和应用与2个应用相同,因为它们各自有一个单独的容器,然后使用共享组容器共享数据。因此,你的第二个应用程序只需要和第一个应用程序做同样的事情:加入同一个组,然后读/写相同的核心数据