【发布时间】:2018-07-18 07:28:31
【问题描述】:
我有一个应用在 OS X 上使用 NSPersistentDocument(没有自动保存),在 iOS 上使用UIDocument(也没有自动保存)。文件表示是二进制核心存储。此应用自 iOS 7 + macOS 10.10 以来一直运行良好。
如果我在 OS X 10.13 上打开一个文档,而另一台设备(macOS 10.13 或 iOS 11)打开同一个文件,在下次保存时我会收到警告 “此文档的文件已被另一个应用程序更改您打开或保存了它。”。该警告是虚假的,因为仅在另一台设备上发生了打开 - 而不是保存。
在寻找此通知的可能原因时,我注意到当在一台设备上打开 iCloud 文件时,会更新名为 com.apple.lastuseddate#PS 的扩展属性。我已确认此扩展属性在 iOS 11 和 macOS 10.13 上均已更新。此扩展属性似乎未在早期版本的 iOS 或 macOS 中使用。我想知道文件元数据的更新是否触发了这个虚假警告。
(我怀疑这个属性可能与 iOS 11 上的 NSFileProvider 有关,因为在 macOS 10.13 上有一个新方法 setLastUsedDate:forItemIdentifier:completionHandler: 和 FinderSync setLastUsedDate:forItemWithURL:completion: 也是新的。)
我的问题是 - 其他人看到这种新行为了吗?会不会给其他人带来这么烦人的副作用?
【问题讨论】:
标签: icloud nsdocument uidocument nspersistentdocument apfs