将数据传递给由外部事件

时间:2018-05-30 14:41:08

标签: swift macos cocoa url-scheme

我为我的应用程序设置了一个URL方案,该方案将从Web浏览器打开。当应用程序收到它时,它会显示AViewController

我还有一个ViewController,BViewController包含一些数据。理想情况下,如果在激活URL方案时BViewController处于打开状态,我希望能够将此数据从AViewController传递到BViewController

由于URL方案在AppDelegate中触发了一项功能,因此我无法将数据从B传递到A

传递数据的最佳方式是什么?

到目前为止,我能想到的唯一解决方案是:

  • 为每个数据设置和获取全局变量
  • AppDelegate收到网址方案调用后,通过访问对象属性从B中提取数据,并在A中设置

这些解决方案我都不满意,当然不是第一个。

有没有更好的解决方法?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果你有......

class Object {
   var someData…
}

class BViewController {
    var object: Object!

    func updateObject() { 
        object.someData = …       
    }
}

class AViewController {
    var object: Object!
}

然后在AppDelegate中,这样的事情(不是真正的代码!)......

func handleURL() {

   if let b = rootViewController as? BViewController { 
       let a = AViewController()
       a.object = b.object
       rootViewController = a
   }
}