应用程序和扩展程序之间共享的单例类

Moh*_*hal 2 iphone ios swift

当我将引用UIViewController或字符串 Id 之类的值添加到单例类,然后尝试从共享扩展访问它们时,我无法再次获取此值共享扩展创建具有空值的新单例

我怎样才能让这个类和它里面的数据在主应用程序和扩展程序之间共享?

class Gateway:NSObject {

    private var id:String? = nil
    private weak var delegate:GatewayDelegate!

    func set(id:String){
        self.id = id
    }

    func set(gatewayDelegate:GatewayDelegate){
        self.delegate = gatewayDelegate
    }

    func dismiss() {
        self.id = nil
        self.delegate = nil
    }


    func append(str:String,_id:String) {

        if let id = self.id ,id == _id ,self.delegate != nil  {            
            self.delegate!.gatewayAppend(str: str)
        }
    }

    static let shared = Gateway()
    private override init() {}
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*w11 7

扩展是一个完全独立的过程。它在自己的沙箱和自己的内存中运行。您的主应用程序和扩展程序都可以创建单例对象的实例,但它们将是单独的实例。他们不会分享任何数据。

要在主应用程序和扩展程序之间交换数据,您需要使用具有用户默认值、钥匙串或文件的应用程序组