在Swift的视图控制器之间共享const Notification.Name的最佳方法是什么?

问题描述 投票:0回答:1

我正在学习有关macOS开发的教程,只是到了一个让一个ViewController发送通知而另一个寄存器监听的部分。本教程只是在两个ViewController中为Notification.Name输入相同的字符串文字,但是我觉得必须有一种将其存储为静态const的方式,或者在两个ViewController都可以访问它的地方。

到目前为止,我有一些想法:

  • 在AppDelegate中创建静态Notification.Name
  • 在UserDefaults中添加一些内容(实际上并没有改善,但以为我会分享想法)
  • 将一些plist放在某个地方(与UserDefaults没太大不同,但更难使用)
  • 制作一个仅包含我想在整个代码中共享的静态常量列表的结构(这可能很有希望,但我不确定是否遗漏了任何隐藏的缺点)

[我曾考虑过将Notification.Name放在AppDelegate中,两个ViewController都可以到达它,但是我感觉Notification.Name'属于'共享Notification的ViewController,所以应该是共享它的那个(减少耦合;仅共享的ViewController及其侦听器将彼此耦合,而不是AppDelegate。但是我对那件事感到不安。将其放在ViewController中似乎也不是正确的答案。当其他ViewController想要共享Notification.Name时会发生什么?现在我有Notification.Names散布在各处。似乎应该有更好的方法。

UserDefaults可以在任何地方访问,但是存储在其中的值是a)不是const(这有点违背UserDefaults的观点),并且b)使用它需要自己的字符串作为键,因此它无法解决任何问题。 :-P

也许将其粘贴在列表中?与UserDefaults有类似的问题,并且使用起来比较乏味,因此也不是很有用。

这种结构构想似乎是一个不错的主意,它使所有内容都统一在一个地方,并且不直接耦合到AppDelegate(例如,这对于将代码从macOS移植到iOS很有用。]]

其中有哪些,将是“最佳实践”?还有什么我没想到的更好的选择吗?显然,归根结底,我可以选择自己认为最适合自己的应用程序的东西,但我想从那些有更多时间考虑这一点的人那里了解不同方法的优缺点。] >

谢谢。

我正在学习有关macOS开发的教程,只是到了一个让一个ViewController发送通知而另一个寄存器监听的部分。本教程只是输入了...

ios swift macos cocoa cocoa-touch
1个回答
0
投票

最好的方法是在文件级别扩展Notification.Name

extension Notification.Name {
    static let myNotification = NSNotification.Name("com.example.myNotification")
}
© www.soinside.com 2019 - 2024. All rights reserved.