【问题标题】:How can document-scoped security bookmarks be stored in Core Data?文档范围的安全书签如何存储在 Core Data 中?
【发布时间】:2017-01-06 05:25:08
【问题描述】:

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

当我开始将其设置为沙盒时,问题就来了:

  • 应用程序将 URL 存储在 Core Data 中,一个目标负责保存,另一个目标负责读取
  • 现在一个目标创建的书签不能被另一个解决

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

有没有一种好方法可以在 Core Data 中存储文档范围的书签并在不同的目标之间共享它们?

【问题讨论】:

    标签: macos core-data nsurl appstore-sandbox security-scoped-bookmarks


    【解决方案1】:

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

    使用以下 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 session 234 和随附的与安全范围书签相关的示例代码。

    希望这会有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-27
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      相关资源
      最近更新 更多