【问题标题】:Locking a single NSPersistentDocument锁定单个 NSPersistentDocument
【发布时间】:2009-12-14 00:35:20
【问题描述】:

我的应用程序当前使用 CoreData 作为后端来存储到存储在 ~/Library/Application Support/MYAPP/MyDataFile.sqlite 中的单个 SQL 数据文件。我知道这是一种不寻常的情况,但是“锁定”这个文件的最佳方式是什么,这样如果用户决定(无论出于何种愚蠢的原因)运行我的应用程序的第二个副本,Core Data 就不会惊慌失措?我应该使用一些老派的东西,比如在某处写一个锁文件并检查它,还是有更好的 Cocoa 方法来做到这一点?

【问题讨论】:

  • 你的应用是命令行应用吗?除非是这样,否则您可能不必担心。 OS X 通常不允许启动 .app 的多个实例。
  • 是的 - 你是对的,这可能有点过分热心了。我已经运行了该应用程序的两个实例,但我只收到 Core Data 错误 - 它实际上似乎并没有将这些更改/错误写入商店。

标签: cocoa core-data locking document persistent


【解决方案1】:

作为锁定 SQLite 文件的替代方法,您可以尝试使用 LSMultipleInstancesProhibited 禁止您的用户运行两个应用程序实例。

编辑:缺点是它还会阻止多个用户(快速用户切换)同时使用您的应用程序,尽管他们不共享核心数据存储。

【讨论】:

  • 是的,这不是我所需要的——我希望用户能够同时在不同的帐户中运行我的应用程序,而不是同时运行。我想我会在我的应用程序委托的 applicationWillFinishLaunching: 方法中编写一些代码。
猜你喜欢
  • 2019-07-04
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 2011-02-14
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多