如何将文档范围的安全书签存储在Core Data中



我一直在制作一个包含多个目标的应用程序,它们作为一个应用程序组相互合作。

问题来了,当我开始把它沙盒:

  • 应用程序在核心数据中存储url,一个目标进行保存,另一个目标进行读取
  • 现在一个目标创建的书签不能被另一个
  • 解决

我知道文档范围的书签可以在应用程序之间共享。但似乎需要将它们存储到另一个"包装器"文档中。

是否有一个很好的方法来存储文档范围的书签在核心数据和不同的目标之间共享?

在多个目标的情况下,确保您使用通用的应用程序组容器共享核心数据模型?所有目标都应该盯着同一个容器吗?还要确保目标是同一个Core数据模型的成员。否则,不同的目标不能使用相同的模型。查看核心数据属性区域内的标识检查器并确保您的目标已勾选?

使用:

从URL存储安全范围的书签
(NSData *) bookmarkDataWithOptions: (NSURLBookmarkCreationOptions) options 
    includingResourceValuesForKeys: (NSArray<NSURLResourceKey> *) keys 
                     relativeToURL: (NSURL *) relativeURL 
                             error: (NSError * _Nullable *) error;

将结果为核心数据的NSData保存为Binary Data数据类型

解析书签使用:

(instancetype) URLByResolvingBookmarkData: (NSData *)bookmarkData 
                                  options: (NSURLBookmarkResolutionOptions) options
                            relativeToURL: (NSURL *) relativeURL 
                      bookmarkDataIsStale: (BOOL *) isStale
                                    error: (NSError * _Nullable *) error; 

返回URL。

请看WWDC 15会话234和附带的关于安全范围书签的示例代码。

最新更新