带有 App Group 的 NSUserDefault 在 iOS 8 Beta3 中不起作用
Posted
技术标签:
【中文标题】带有 App Group 的 NSUserDefault 在 iOS 8 Beta3 中不起作用【英文标题】:NSUserDefault with App Group is not working in iOS 8 Beta3 【发布时间】:2014-07-19 13:35:44 【问题描述】:我必须将Boolean
的值保存到我的应用程序中的NSUserDefault
与custom keyboard extension
并与应用程序组共享。
我的代码在ios 8
Beta1 中工作。
self.defaults = [NSUserDefaults standardUserDefaults];
if([self.defaults boolForKey:@"BlackKey"])
NSLog(@"Black");
else
NSLog(@"White");
但在 iOS 8 Beta3 中没有。当我从 NSUserDefault
检索 Boolean
值时,它什么也不返回,我无法从自定义键盘扩展加载。
我也尝试在NSUserDefault
中使用initWithSuiteName
。我是 iOS 8 Beta3 的那个问题或 bug 的唯一一个吗?
【问题讨论】:
【参考方案1】:一些可能的解决方案是:
您的应用组设置不正确,或者您使用的组标识符不正确,initWithSuiteName:
您尚未启用键盘的网络访问。 This document 在您为键盘禁用网络访问时(默认行为)声明以下内容:
没有包含应用的共享容器
这是一个错误。
【讨论】:
所以你的意思是,我必须启用 RequestsOpenAccess 才能使用 NSUserDefault? 看起来这是在 beta 5 中修复的【参考方案2】:尝试使用
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"BlackKey"];
当您使用此代码保存和阅读时:
if([[NSUserDefaults standardUserDefaults] boolForKey:@"BlackKey"])
NSLog(@"Black");
else
NSLog(@"White");
或者如果您已经这样做了,那么它可能是错误,并且 Xcode 6 测试版也有其他错误,因此在 Xcode 5 或更早版本中尝试会更安全。
【讨论】:
这行不通。你应该说 iOS 8 Beta 和 iOS7。不是 XCode 8 Beta。 :D以上是关于带有 App Group 的 NSUserDefault 在 iOS 8 Beta3 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
教义:带有 CASE WHEN 的 GROUP_CONCAT 的语法是啥?
带有 LINQ 的 .NET 驱动程序:NotSupportedException: $project 或 $group