因此,假设我有一个容器应用程序和该应用程序的扩展以用于自定义键盘。假设自定义键盘默认有 5 个键。这些键是什么无关紧要。
现在,我希望用户能够禁用容器应用程序中的 5 个键中的任何一个。如果在容器应用程序中禁用,键应显示为红色并在键盘中禁用。
我的问题是:如何将容器应用程序中的用户首选项/序列化数据加载到 UIInputViewController 中?
如果有人可以帮助完成实现这一目标的必要步骤,或提供教程链接(我似乎找不到),将不胜感激。
因此,假设我有一个容器应用程序和该应用程序的扩展以用于自定义键盘。假设自定义键盘默认有 5 个键。这些键是什么无关紧要。
现在,我希望用户能够禁用容器应用程序中的 5 个键中的任何一个。如果在容器应用程序中禁用,键应显示为红色并在键盘中禁用。
我的问题是:如何将容器应用程序中的用户首选项/序列化数据加载到 UIInputViewController 中?
如果有人可以帮助完成实现这一目标的必要步骤,或提供教程链接(我似乎找不到),将不胜感激。
所以我终于想通了。以下是基本步骤。
1) 创建一个共享组。此链接提供有关如何执行此操作的分步说明:https ://stackoverflow.com/a/29051138/1152868 。我最初已经实现了这些步骤,但我仍然无法从扩展访问共享目录(在https://stackoverflow.com/a/26050187/1152868中概述)。事实证明,您必须将权利文件添加到容器应用程序和扩展目标中。这对我来说是个大问题。
2)一旦您确认跨容器应用程序和扩展程序的开放访问,您可以在 em 之间共享数据。我参考了本教程进行分享: http: //www.atomicbird.com/blog/sharing-with-app-extensions。您有两种选择:使用共享文件目录或使用共享 NSUserDefaults 域。在我的应用程序中,我使用 NSCoding 保存和加载数据。但是,我在解压扩展中的数据时遇到了问题,所以我决定改为保存到 NSUserDefaults(我在扩展中需要的数据可以格式化为一个简单的字典,所以很容易)。
使用共享组和 NSUserDefaults,我现在可以将数据从容器应用程序保存并加载到扩展程序!