标签: nsuserdefaults

NSUserDefault存在-iPHONE SDK

如果在那里保存NSUserDefault对象,我将如何检查"if"语句?我真的不确定怎么称呼它.所以这是一个很短的问题..

谢谢

iphone xcode cocoa nsuserdefaults

1
推荐指数
2
解决办法
1047
查看次数

NSUserDefaults的内存问题

我花了好几个小时试图让我的项目工作,但我无法让它工作.

基本上,我正在尝试使用NSUserDefaults来保存自定义对象,当用户点击保存按钮并在应用加载时加载所有数据.如果没有保存以前的NSUserDefault,我想设置一些默认值.最后,我在尝试加载以前保存的NSUserDefault时收到EXC_BAD_ACCESS.设置起始数据时,它在第一次加载时工作正常.问题是,当我尝试为它启用NSZombieEnabled和其他env变量时,它会在没有EXC_BAD_ACCESS的情况下以某种方式加载.所以这就是我正在使用的:

[App Delegate.h]

#import <UIKit/UIKit.h>
#import "Note.h"

@interface ToDoWallAppDelegate : NSObject <UIApplicationDelegate> {
    ...
    Note *note;
}

...
@property (retain) Note *note;

@end
Run Code Online (Sandbox Code Playgroud)

[App Delegate.m]

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    ...
    note = [[Note alloc] init];

    NSUserDefaults *stdDefaults = [NSUserDefaults standardUserDefaults];
    NSData *noteData = [stdDefaults objectForKey:@"Note"];
    if (noteData) {
        self.note = (Note *)[NSKeyedUnarchiver unarchiveObjectWithData:noteData];
    } else {
        note.background = [UIImage imageNamed:@"Cork.jpg"];
        note.picture = [UIImage imageNamed:@"Cork.jpg"];
        note.font = [UIFont fontWithName:@"Helvetica" size:18.0f];
        note.fontColor = [UIColor blackColor];
        note.fontNameIndex = 9;
        note.fontSizeIndex = 6; …
Run Code Online (Sandbox Code Playgroud)

memory iphone xcode exc-bad-access nsuserdefaults

1
推荐指数
1
解决办法
1391
查看次数

vs自己的Plist

在我过去的项目中,我总是创建一个NSObject-HelperClass,它与selfmade-Plist交互.现在我听说我可以使用[NSUserDefaults standardUserDefaults]并且还有我的字典.

那么我为什么要使用UserDefaults而不是我自己的按摩plist的NSObject呢?

欢呼声

iphone objective-c plist nsuserdefaults

1
推荐指数
1
解决办法
779
查看次数

为什么在NSUserDefault中存储为Object的Double值不能反映在UITableViewCell中?

我试图存储DoubleNSUserDefault但是虽然我能够存储它(因为我的NSLog值显示真值),当我尝试重新加载UITableView时,其Cell值不会更新userdefault中的当前值.

这种奇怪的行为只有在我setUserDefaults从委托方法调用我的方法时才会发生UIAlertView

为什么会出现这种奇怪的行为?

这是我的代码:

- (void)setUserDefaults
{
    NSLog(@"setUserDefault : empArray: %d, empCount: %d",empArray.count, empCount);
    NSMutableDictionary *empData = [[NSMutableDictionary alloc] init];
    if (empArray.count>1)
        empData = [empArray objectAtIndex:(empCount-1)];   // because empCount starts from 1. and empArray[0] = empCount 1
    else
        empData = [empArray objectAtIndex:0];

    [userDefault setObject:[NSString stringWithFormat:@"%.2f",[empData objectForKey:@"salary"]] forKey:@"salary"];
    NSLog(@"setUserDefaults: salary=%.2f",[[empData objectForKey:@"salary"] doubleValue]);

    [empData release];

    [self.tblView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

UIAlertView的委托方法如下:

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger) buttonIndex
{
    if (alertView.tag == 1)    // btnRemoveEmpPressed. 
    {
        if(buttonIndex==0)
        {
            NSLog(@"buttonIndex …
Run Code Online (Sandbox Code Playgroud)

iphone delegates objective-c nsuserdefaults uialertview

1
推荐指数
2
解决办法
1260
查看次数

Cocoa:重置NSUserDefaults

我尝试使用-resetStandardUserDefaults,我尝试删除plist文件,没有一个真正做我需要的.我想完全重置我的首选项,就好像重新安装了应用程序一样.有一个很好的解决方案吗?

我试过了 :

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
Run Code Online (Sandbox Code Playgroud)

但Xcode抱怨道.显然,它不喜欢plist文件已经消失.这是Xcode的错误: 警告

cocoa objective-c reset nsuserdefaults

1
推荐指数
1
解决办法
1898
查看次数

将NSMutableArray保存到NSUserDefaults

我有一个NSMutableArray内部AppDelegate,我正试图将它保存到NSUserDefaults.该NSMutableArray(strainsfinal)包含收藏项目列表.我希望此列表保存,即使应用程序关闭也会出现,然后重新启动.有谁知道为什么我的代码不工作(不保存我的数据)?见下文:

AppDelegate.m

-(void)updateStrains:(NSDictionary *)item
{        
    NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
    NSData *dataSave = [currentDefaults objectForKey:@"strains"];
    if (strainsfinal != nil)
    {
        NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataSave];
        if (oldSavedArray != nil)
            strainsfinal = [[NSMutableArray alloc] initWithArray:oldSavedArray];
        else
            strainsfinal = [[NSMutableArray alloc] init];
    }

}
Run Code Online (Sandbox Code Playgroud)

编辑:Appdelegate.m所以我已经将上面的方法更改为下面的方法(我认为它应该工作),但应用程序崩溃,说:"由于未捕获的异常'NSInvalidArguementException'终止应用程序,原因:'NSConcreteAttributedString initwithString:零'价值'.

我错过了什么?!

-(void)updateStrains:(NSDictionary *)item {

    NSData *dataSave = [NSKeyedArchiver archivedDataWithRootObject:strainsfinal];
        [[NSUserDefaults standardUserDefaults] setObject:dataSave forKey:@"strains"];
        NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
        [nc postNotificationName:@"arrayupdated" object:self userInfo:nil];
        NSLog(@"updated strains %@",strainsfinal);   
}
Run Code Online (Sandbox Code Playgroud)

objective-c nsuserdefaults ios

1
推荐指数
1
解决办法
5360
查看次数

使用KVO和delayedSelector观察NSUserDefaults时的iOS exc_bad_access

我遇到了一个奇怪的错误,想检查我是否正在使用我的Key值正确观察NSUserDefaults的变化.

我在我的应用程序的两个地方使用了这个代码没有问题,然后我添加了第三个控制器,它观察"goldCount"和"energyCount"的值.现在,当我设置初始值时,应用程序崩溃与exc_bad_access.我在使用父视图后2秒将该控制器添加到视图中performSelectorAfterDelay.

在显示游戏屏幕之前,我设置了以下属性:

//crash on this line 
[[NSUserDefaults standardUserDefaults] setInteger:200 forKey: goldCount]; 

[[NSUserDefaults standardUserDefaults] setInteger:150 forKey: energyCount];
Run Code Online (Sandbox Code Playgroud)

在3个不同的视图控制器中,我在viewDidLoad中有这个代码:

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults addObserver:self
           forKeyPath:@"goldCount"
              options:NSKeyValueObservingOptionNew
              context:NULL];

[defaults addObserver:self
           forKeyPath:@"energyCount"
              options:NSKeyValueObservingOptionNew
              context:NULL];

self.goldLabel.text = [NSString stringWithFormat:@"%i",[[GameDataManager sharedInstance] currentGoldCount]];
self.energyLabel.text = [NSString stringWithFormat:@"%i",[[GameDataManager sharedInstance] currentEnergyCount]];
Run Code Online (Sandbox Code Playgroud)

以下是该类更新其标签的方式:

// KVO handler
-(void)observeValueForKeyPath:(NSString *)aKeyPath ofObject:(id)anObject
                       change:(NSDictionary *)aChange context:(void *)aContext
{

    //aKeyPath gives us the name of a user default that has changed
    if([aKeyPath isEqualToString:@"goldCount"])
    {
        //we are interested in the new …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access objective-c key-value-observing nsuserdefaults ios

1
推荐指数
1
解决办法
866
查看次数

像watchOS 2中的共享NSUserDefaults和App Groups?

我目前正在为watchOS 2更新我的应用程序,并且在设备之间的通信方面遇到了一些麻烦:之前我一直在使用共享的NSUserDefaults来启用Watch和iOS设备,以便独立地从一个App Group读取和写入多个值.

现在watchOS 2应用程序在Watch上本地运行,Watch Connectivity Framework取代了之前的通信选项,这似乎不再适用.但是,从我在参考文献中看到的内容来看,实现与WatchOS 1中使用Watch Connectivity相同的功能相当麻烦......

有没有其他选择让我创建某种容器/文件/数据库/我可以从我的Watch应用程序和相关的iOS应用程序访问和更新?

nsuserdefaults swift ios-app-group watchos-2

1
推荐指数
1
解决办法
1060
查看次数

UserDefault保存按钮状态

即使我退出了视图\ App,我也试图通过保存状态来完成我最喜欢的按钮.如果有人能告诉我我该怎么做,那将是很棒的,我正在使用Xcode 8并使用Swift 3进行编码.

  //create a new button
    let Favoritebutton: UIButton = UIButton(type: UIButtonType.custom)
    //set image for button
    Favoritebutton.setImage(UIImage(named: "EmptyHeart.png"), for: .normal)
    Favoritebutton.setImage(UIImage(named: "FilledHeart.png"), for: .selected)
    //add function for button
    Favoritebutton.addTarget(self, action: #selector(self.button), for: .touchUpInside)
    //set frame
    Favoritebutton.frame = CGRect(x:0,y: 0,width: 35,height: 35)

    Favoritebutton.isSelected = UserDefaults.standard.bool(forKey: "isSaved")

    let barButton = UIBarButtonItem(customView: Favoritebutton)
    //assign button to navigationbar

    self.navigationItem.rightBarButtonItem = barButton

    let state = UserDefaults.standard.bool(forKey: "isSaved") ?? false

    }


@IBAction func button(sender: UIButton) {

    sender.isSelected = !sender.isSelected
    if let Favoritebutton = sender …
Run Code Online (Sandbox Code Playgroud)

xcode uibutton nsuserdefaults ios swift

1
推荐指数
1
解决办法
1948
查看次数

iOS - 保存到UserDefaults同步?

UserDefaults上的操作是否同步?例如,第二次保存是否等待第一次保存完成?

UserDefaults.standard.set(myValue1, forKey: "myValue1")
UserDefaults.standard.set(myValue2, forKey: "myValue2")
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swift

1
推荐指数
1
解决办法
721
查看次数