objective-c - 跨 Cocoa 应用程序共享数据

标签 objective-c cocoa controller sharing

我已经搜索了如何正确执行此操作,但我不相信我找到了答案。这是我的设置:

NSWindowController 在 2 个不同的 NSViewController 中加载(一次仅显示一个)。当我将文件拖放到已加载的 NSViewController View 上时,我想保存该文件的路径。我可以获得所有这些,但我现在想要做的是,当我交换到另一个 NSViewController 时,我想将此文件路径传递给新的 NSViewController。

我想出的唯一解决方案是将通知从 NSViewController 发布到 NSWindowController,然后使用此数据初始化第二个 NSViewController,但这似乎相当复杂。有没有一种方法可以让我将数据保存为全局实体,然后稍后从我的第二个 NSViewController 访问它?

注意:NSViewController 与其他 Controller 交换后将被释放。

如有任何见解,我们将不胜感激。

更新:我只是要更改应用程序,以便两个 View Controller 始终位于内存中。这样我就可以像其他人建议的那样使用 KVO 或其他方法。

最佳答案

View Controller 用于控制模型对象的 View 。因此,您的每个 View Controller 都必须从某个底层模型对象获取数据,在您的情况下,该对象可能是相同的。如果您没有,我建议您将应用程序重新设计为 MVC 模式。

当您创建 View Controller 时,您可以设置 representedObject属性并将文件名存储为其属性之一。如果您的模型对象符合 KVO,您甚至可以让每个 View Controller 观察模型对象的文件名属性,并在发生更改时使用react。

关于objective-c - 跨 Cocoa 应用程序共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6400897/

相关文章:

macos - Objective-C 将图像拖入 NSTextView 子类

forms - 在 TYPO3 extbase 的一个 Controller 中从两个不同的模型中获取数据

php - 尽管在 RouteServiceProvider 中取消了注释,但 Controller 仍无法在 Laravel 8 上运行

ios - GCD 异步串行队列 - 可以限制队列大小吗?

ios - 如何使用 Storyboard从自定义 uitableviewcell 正确启动弹出框 segue

objective-c - 关于列出特定对象的观察者

objective-c - 处理大量物体

objective-c - cocoa 网页 View 链接已禁用

iphone - iPhone 上的 SQLite 批量插入不起作用

java - 如何明智地组织 @RestController @Controller 结构 url 映射和内部结构?