我一直在制作一个包含多个目标的应用程序,它们作为一个应用程序组相互合作。
当我开始将其设为沙盒时,问题就来了:
- 应用程序将 URL 存储在核心数据中,一个目标进行保存,另一个目标进行读取
- 现在一个目标创建的书签不能被另一个解决
我知道可以在应用程序之间共享文档范围的书签。但似乎它们需要存储到另一个“包装”文档中。
有没有一种好方法可以在 Core Data 中存储文档范围的书签并在不同的目标之间共享它们?
我一直在制作一个包含多个目标的应用程序,它们作为一个应用程序组相互合作。
当我开始将其设为沙盒时,问题就来了:
我知道可以在应用程序之间共享文档范围的书签。但似乎它们需要存储到另一个“包装”文档中。
有没有一种好方法可以在 Core Data 中存储文档范围的书签并在不同的目标之间共享它们?
在多个目标的情况下,确保您使用通用应用组容器共享核心数据模型?所有目标都应该查看同一个容器吗?还要确保目标是相同核心数据模型的成员。如果不是,不同的目标不能使用相同的模型。查看核心数据属性区域内的身份检查器并确保您的目标被勾选?
使用以下 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和随附的与安全范围书签相关的示例代码。
希望这可以帮助..