Tag: nsuserdefaults

iOS NSUserDefaults监视单个键值的更改

我有下面的代码旨在捕捉NSUserDefaults值为特定键更改的事件。 [[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:SOME_NSSTRING_VARIABLE options:NSKeyValueObservingOptionNew context:NULL]; – (void)observeValueForKeyPath:(NSString *) keyPath ofObject:(id) object change:(NSDictionary *) change context:(void *) context {NSLog (@"Changed for key %@", keyPath); } 但是,observeValueForKeyPath永远不会被调用。 我甚至尝试用一个stringreplaceSOME_NSSTRING_VARIABLE,正如在观察NSUserDefaults键的值更改中所提到的,但是它没有帮助。 更新:我正在改变TabView的NSUserDefaults。 上述监视更改的代码位于同一个tabviewcontroller的不同选项卡中。 在我监视更改(上面的代码存在的选项卡)的选项卡中,如果我添加一个: – (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // NSLog(@"viewillappear"); NSUserDefaults *FUDefaults = [NSUserDefaults standardUserDefaults]; NSLog(@"The username obtained is: %@", [FUDefaults objectForKey:SOME_NSSTRING_VARIABLE]); } 已更新的NSUserDefaults值正确获得,但observeValueForKeyPath从未被调用。

将CLLocationCoordinate2D存储到NSUserDefaults

我是新的iphone开发,我想存储CLLocationCoordinate2D对象到NSUserDefaults 。 我在尝试 [defaults setObject:location forKey:@"userLocation"]; 但它给出了错误'发送CLLocationCoordinate2D参数的不兼容的typesID' 那么如何将CLLocationCoordinate2D存储到NSUserDefaults ? 谢谢。

NSUserDefaults – 存储和检索数据

我有一些使用NSUserDefaults在一个视图中存储的数据,然后显示在另一个视图。 我遇到的问题是当用户更改数据,然后返回到显示数据的视图(在UILabel中)时,将显示首次保存的数据,而不是保存的新文本。 我想我也许需要用viewDidAppear做一些事情,这样每次显示视图时都会显示最新保存的数据。 这里是我在UILabel上显示NSUserDefaults存储信息的代码: NSString *aValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"myTextFieldKey"]; NSLog(@"Value from standardUserDefaults: %@", aValue); NSLog(@"Label: %@", myLabel); myLabel.text = aValue; 如果有人能指出我的方向是好的, 谢谢

钥匙扣和NSUserDefault之间的区别?

我是新的objective C ,我已经创build了一个应用程序,我已经使用NSUserDefault和Keychain来存储我的用户名和密码。 但我不能区分两者。 请帮忙区分两者。 谢谢。

决定使用核心数据还是NSUserDefaults

我在我的应用程序上有一个function,允许用户邀请他们的朋友(通过Facebook或朋友在他们的地址簿中)。 大多数人会拥有<5K的朋友,有些人拥有更多(也许最多有10K个朋友)。 我想跟踪他们邀请的朋友,所以他们不会再邀请他们。 为了做到这一点,我保存在NSUserDefaults的朋友的字典存储这些信息。 我想知道如果NSUserDefaults就足够了,或者如果我需要使用Core Data 。 此外,我正计划添加一项function,以便邀请朋友参加特定活动。 (在我们的应用程序中有很多事件)。如果我想跟踪哪些朋友被邀请参加哪个事件,那么我应该使用Core Data吗? NSUserDefaults满足吗? (我假设它不会)。 最后,应该使用Core Data还是应该保存在服务器端?

通过Apple Watch更新应用程序内容的简单方法

当我按下AppleWatch应用程序上的button时,我无法find更新iPhone应用程序中的视图的简单方法。 我用NSUserDefaults Observer像这样试了一下: iPhone App ViewController(在ViewDidLoad()中): // Create and share access to an NSUserDefaults object. mySharedDefaults = NSUserDefaults(suiteName: "group.sharedTest") //Add Observer NSUserDefaults.standardUserDefaults().addObserver(self, forKeyPath: "test", options: NSKeyValueObservingOptions.New, context: nil) 在Watchkit Extensions InterfaceController中,我添加了一个带有这个代码的button的IBAction: mySharedDefaults!.setObject("testValue", forKey: "test") mySharedDefaults!.synchronize() 但是当我按下button,没有任何反应! 如果我在我的iPhone视图控制器中设置一个对象,它的工作,但不是如果它通过应用程序更新! 有人能帮我吗?

确定用户是否启用了应用程序的Safari内容阻止程序扩展

我正在处理Safari内容阻塞扩展 。 如果扩展function被禁用,我打算显示设置说明,如果反向启用则显示设置。 如何确定用户是否启用了扩展? 我已经看到这种方法来检测自定义键盘是否被激活,但NSUserDefaults没有与Safari Content Blockers相关的键。

为什么应用程序组不能在我的WatchKit扩展中工作?

我已经看到所有关于共享主机应用程序和附加应用程序之间的NSUserDefaults数据的其他职位,但我仍然无法正常工作。 以下是我所做的一切: 在Xcode的“function”选项卡上为扩展程序和主机应用程序启用应用程序组。 将组名称设置为“group.com.mycompany.foo”,并确认扩展程序和主机应用程序已添加到组中。 通过将“com.apple.security.application-groups”键设置为我的应用程序组名称,确认存在权利文件。 (对于它的价值,我也使用扩展和主机应用程序之间的共享钥匙串function,这是可行的 – 所以我不认为这是权利问题) 重新生成所有configuration文件。 事实上,我甚至撤销了所有的证书,并在设置应用程序组后重新创build了所有configuration文件。 而所有这一切,这个代码仍然无法正常工作: // in the host app NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"]; [testDefaults setObject:@"TEST" forKey:@"foo"]; [testDefaults synchronize]; 接着: // in the extension NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"]; NSLog(@"%@", [testDefaults objectForKey:@"foo"]); 这导致: (null) 当我查看Xcode首选项时,我注意到这些图标,没有一个具有“应用程序组”图标: 但正如我之前所说的,在设置应用程序组之后,我尽可能清除了我的钥匙串,证书和configuration文件。 所以,如果这实际上是问题,我如何将配额添加到configuration文件? 我错过了什么? 我是新鲜的想法。 帮帮我? 编辑 :访问组正在我的今天和Safari扩展,只是不在WatchKit扩展。 我不知道为什么,所有的构build设置似乎configuration相同的方式。 编辑2 :对于那些坚持我的能力没有正确设置,这里是一个截图:

为什么在创buildUIWebView时,清除NSUserDefaults会导致EXC_CRASH?

在我开始之前,我应该告诉你, 这只发生在iOS 5.1。 在最近的更新之前,这从来没有发生过,并且在任何其他版本上都不会发生。 这就是说,这是怎么回事。 当用户注销我的应用程序时,发生的一件事是所有的NSUserDefaults被删除。 我可以使用本SO问题中提出的方法完全删除所有NSUserDefaults ,而不是手动删除每个可能添加到用户默认值的NSUserDefaults 。 NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; 什么似乎发生虽然,是每次我尝试创build一个UIWebView删除NSUserDefaults ,我得到一个EXC_CRASH (SIGABRT) 。 当我调用[[UIWebView alloc] initWithFrame:frame]时发生崩溃。 奇怪的吧? 完全退出并重新打开应用程序允许再次创buildUIWebView 。 所以,我设法弄清楚,删除默认值将导致UIWebView问题,但可以肯定的是,我为-[NSUserDefaults setObject:forKey:]添加了一个符号断点。 创build一个UIWebView的确会触发断点。 戳穿崩溃日志给我的例外原因: -[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: WebKitLocalStorageDatabasePathPreferenceKey) 这是堆栈跟踪的开始: 0 CoreFoundation 0x3340688f __exceptionPreprocess + 163 1 libobjc.A.dylib 0x37bd4259 objc_exception_throw + 33 2 […]

在同步完成之前iOS NSUserDefaults访问

如果我设置了一个NSUserDefault对象,并在它被同步之前尝试访问它,我将能够访问我刚刚添加的对象吗? 我已经尝试编写代码来testing它,但是我不确定是否在没有我知道的情况下发生了同步 。