- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚刚注意到我的 **NSUserDefaults**
中存在一个键经常返回 nil。好像有一半的时间正确的,另一半不是。我说了一半,但我没有意味着它的翻转,它只有 40-50% 我认为它不起作用。当我写入初始值时,我立即调用同步。我使用这个 key 作为应用程序我在新用户注册时设置的版本。
以下代码返回 nil:
#define kDBrevision @"revision"
NSString *rev = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
当我启动应用程序并仅监控该值时(没有写入任何 NSUserDefaults),该值有时是有效的完全不修改 NSUserDefaults。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *r = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
NSLog(@"revision %@", r);
_exit(1);
我不知道为什么会这样。我在我的电脑上运行 iOS 10设备连接到 Xcode 8.2.1。有人有想法么?谢谢
编辑:我开始与苹果公司讨论解决这个问题并发现如果你有文件保护已完全打开,这可能是导致此问题的原因不时出现,但苹果告诉我,我的特殊案例(这是我目前唯一确定的案例)是一个错误。这种情况是当您使用 Xcode 在它应该在设备上启动应用程序时不会像这样失败,它偶尔会失败。不知道什么时候或是否会固定。相反,我将我的关键字符串从默认值移动到钥匙串(keychain)。
最佳答案
这似乎是 Xcode 8 和/或 iOS 10 的错误。我自己遇到了它并最终将案例缩小到 UserDefaults 间歇性地返回 nil 而实际上有 key 的数据。具体来说,我设置了一次数据,然后去掉set逻辑,只执行get逻辑,如此反复,有时取值,有时取nil。
我将我的运行方案更改为使用发布配置,并在没有附加调试器的情况下在设备上运行该应用程序,问题消失了,也就是说,每次执行时获取逻辑都会产生正确的值(~30 次)。
这里还有一些讨论:
iOS 10 with XCode 8 GM caused NSUserDefaults to intermittently not work
iOS 10, NSUserDefaults Does Not Work
关于ios - NSUserDefaults objectForKey 有时为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41756036/
我对 NSUserDefaults 的 standardUserDefaults 有疑问。standardUserDefaults 方法到底做了什么?是在初始化对象吗? 最佳答案 是或否。 NSUse
我的应用程序涉及用户能够拖动特定项目,例如音量 slider 和 UIImage View 。我的目标是能够保存项目的位置,以便用户在重新启动后不必再次拖动项目。不幸的是,我在使用“保存 CGRect
有谁知道通过 NSLog 转储 NSUserDefaults 的 standardUserDefaults 的快速方法?这是我的: NSLog(@"NSUserDefaults dump: %@",
我的主菜单 (MainMenu.xib) 中有一个名为“Word Wrap”的 NSMenuItem。它的值绑定(bind)到我的共享用户默认 Controller ,也在 XIB 中实例化。选中时它
App Programming Guide for tvOS简要说明: Apple TV上没有用于应用程序的持久本地存储。这意味着为新的Apple TV开发的每个应用程序都必须能够在iCloud中存储
苹果的文档说 NSUserDefaults temporarily disables sudden termination to prevent process killing between the
我使用 NSUserDefaults 来存储一些东西。 它工作正常,但只有在我重新启动应用程序后。 我使用:[首选项同步];我以为它会立即保存数据,但首选项保持为空。 如果您有任何想法或已经处理过它,
在有人说这个问题之前已经被问过很多次之前,我已经浏览了大约 20 个不同的答案,并尝试了我发现的所有内容。尽管如此,我大约 5 天前才开始使用 Objective C,所以可能有一些非常简单的解决方案
我试图在应用程序第一次启动时显示警报。如果他们稍后进入设置页面并希望再次看到它,我还想显示此警报。我想我可以在 NSUserDefaults 中设置一个 bool 值。我不太确定如何做到这一点(假设这
在我的 viewWillLoad: 方法中,我目前正在执行以下操作: - (void)viewWillAppear:(BOOL)animated { NSUserDefaults *defaul
我将一个整数值传递给 NSUserDefault 对象来存储,以便在我的应用程序加载时使用。我HAD它工作得很好,直到我尝试将该整数值切换为 float 。它导致了一大堆问题,所以我重新调整了我的方法
我在 Settings.bundle 中保存了一些设置,并且尝试在 application:didFinishLaunchingWithOptions 中使用它们,但在模拟器上首次运行时,通过按键访问
数组如何保存到 NSUserDefaults 中? 我有以下代码尝试存储 NSURL 数组 NSArray *temp = [[NSArray alloc] initWithArray:[mySing
NSUserDefaults 的同步方法何时以及为何失败?确保我的值实际写入并提交给 NSUserDefaults 的最佳方法是什么,这样我在应用程序重新启动后恢复状态就不会遇到任何问题? 最佳答案
我对 NSUserDefaults 有疑问,并且不太明白发生了什么。 我的应用程序有 5 个级别,每个级别都与 NSUserDefaults 执行完全相同的操作(检索级别默认值,在用户玩该级别时更改值
我能够使用 NSUserDefaults 存储、检索和删除值。我无法成功找到 NSUserDefaults 在 iPhone 上的物理存储位置?我猜它应该是 plist 文件,但不确定。有谁知道是否可
谁能告诉我 NSUserDefaults 的最大大小。意味着我们可以存储在用户默认值中的对象或基元。例如 10 MB 等。 谢谢 最佳答案 不,除了设备本身的存储容量之外,NSUserDefaults
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: How can I reset the NSUserDefaults data in the iPhone simu
每次向 plist 写入任何内容时,我都会使用 [[NSUserDefaults standardUserDefaults] Synchronize] 。这太过分了吗?或者这样做会产生不良影响吗? 最
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:@"xxxxxxxx" fo
我是一名优秀的程序员,十分优秀!