在自定义键盘中存储数据

时间:2014-08-16 18:02:55

标签: objective-c save ios8 ios-app-extension custom-keyboard

我正在构建一个自定义键盘,可以了解您键入的方式以实现更智能的自动更正。为了学习...

我需要能够将数据存储到用户设备。我已尝试将NSFileManagerNSDocumentsDirectory一起使用,但AppExtension中没有任何内容被保存。 (我在常规应用程序(非应用程序扩展)中测试了代码(复制粘贴)并且它有效)。我甚至在.plist中启用了“请求开放访问”并重新安装了键盘...仍然无法保存数据。

有没有办法在app-extension中存储数据?


我考虑的可能解决方案:

•也许在用户地址簿中创建一个包含我信息的联系人(如果允许app扩展名),但是用户可能会怀疑为什么我的应用请求修改其联系人地址的权限书)。

•显示使用javascript注入来存储和读取数据Safari Javascript Database的隐藏UIWebView,但是如果缓存被清除,我担心这些数据可能会被删除。

1 个答案:

答案 0 :(得分:0)

编辑:现在这在iDevice beta 5上已经不再适用了我(启用了requestOpenAccess或禁用了)?但它仍适用于SIMULATOR beta 5?嗯

__原帖在下面: _

事实证明NSUserDefaults保存数据,它只能在BETA 3模拟器上运行,但确实可以在BETA 5 iDevice上运行。 RequestsOpenAccess不需要启用!

NSUserDefaults *defaults = [[NSUserDefaults alloc]initWithSuiteName:@"com.company.keyboard.uniqueCodeHere"];//uniqueCodeHere can be anything... we just have to make sure the SuiteName isn't equal to your info.plist bundle ID so we add a random uniqueCode to the end of this ID.
[defaults setObject:@"myStringData" forKey:@"savedStrings"];
[defaults synchronize];

*注意,SuiteName不能与info.plist中的捆绑ID相同,或者由于某种原因它不起作用......