标签: nsuserdefaults

是否可以在用户默认值中保存计时器的状态?

我有一个标签,我正在显示倒数计时器.

现在,如果我关闭我的应用程序,计时器将关闭,标签的文本也将关闭.我知道我们可以保存标签的文本值.但是,当应用程序再次启动时,我们如何显示正确的倒计时.

假设我在3分钟后关闭00:05:35当应用程序再次启动时,标签应该显示00:02:35并且计时器应该在那里进行剩余的倒计时

objective-c nsuserdefaults nstimer iphone-sdk-3.0

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

Objective-C在NSUserDefaults中保存NSColor

如何保存点的颜色,以便在打开和关闭应用程序时,点是用户最后设置的颜色?

有人可以向我解释如何使用NSUserDefaults以及在哪种方法中声明NSUserDefaults.

到目前为止我有这个:

NSData *data = [NSArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyColor"];

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyColor"];
NSColor *color = [NSUnarchiver unarchiveObjectWithData:data];
Run Code Online (Sandbox Code Playgroud)

我遵循的教程链接:http: //www.mactech.com/articles/mactech/Vol.25/25.04/2504RoadtoCode/index.html

objective-c save nsuserdefaults nscolor

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

NSMenuItem的状态绑定到NSUserDefaults中的布尔值不保持同步

我的主菜单(MainMenu.xib)中有一个名为"Word Wrap"的NSMenuItem.它的值绑定到我的共享用户默认控制器,也在XIB中实例化.它在选择时还会发送以下操作:

- (IBAction)toggleWordWrap:(id)sender {
    NSUserDefaultsController *ctrlr = [NSUserDefaultsController sharedUserDefaultsController];
    if ([[[ctrlr values] valueForKey:@"wordWrapIsEnabled"] boolValue]) {
        // turn on word wrap
    } else {
        // turn off word wrap
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的app delegate +initialize方法中,我使用默认值填充标准用户默认值:

+ (void)initializeDefaults {
    NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:
                             [NSNumber numberWithBool:NO], @"wordWrapIsEnabled",
                             // etc.
                             nil];
    NSUserDefaultsController *ctrlr = [NSUserDefaultsController sharedUserDefaultsController];
    [ctrlr setInitialValues:defaults];
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我的NSMenuItem状态与我的用户默认值不同步.以下是发生的事情的时间表:

应用发布:

  • 未选中自动换行菜单项
  • wordWrapIsEnabled 没有
  • 自动换行是关闭的

第一次选择Word Wrap:

  • 选中Word Wrap菜单项
  • wordWrapIsEnabled不是(BZZZT WRONG)
  • 自动换行(BZZZT WRONG)

第二次选择Word Wrap:

  • 未选中自动换行菜单项
  • wordWrapIsEnabled(BZZZT …

nsuserdefaults cocoa-bindings nsmenuitem

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

如何使用NSUserDefaults更新密钥的数据

嗨,我想更新密钥的数据,但它仍然保持不变我的代码是:

NSUserDefaults *userNamePrefs = [NSUserDefaults standardUserDefaults];

    [userNamePrefs removeObjectForKey:@"mykey"];

    [userNamePrefs setObject:@"myNewStringValue" forKey:@"mykey"];
Run Code Online (Sandbox Code Playgroud)

但它不起作用它不删除对象而忽略为键添加新值,请帮助我缺少什么

谢谢

iphone xcode cocoa objective-c nsuserdefaults

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

尝试在NSUserDefaults中保存索引路径时出错

我想,以节省indexPath为正在从删除的行UITableViewNSUSerDefaults.

但我得到以下异常:

Attempt to insert non-property value '<NSIndexPath 0x834cc00> 2 indexes [0,1]
Run Code Online (Sandbox Code Playgroud)

如何解决此问题并将数据保存到用户默认值中以便在其他方法中访问它?

iphone objective-c nsuserdefaults nsindexpath ios

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

如何将JSON字符串保存到NSUserDefaults?

我有一个JSON请求,返回不同的参数,例如名称.我想为name参数缓存一个变量,稍后我可以在app中查看.

例如:来自JSON request = david的名称.该变量称为firstname.firstname应该等于"david".应该存储名字,以便我可以在我的应用程序的所有部分中查看它.

我看到另一个类似的问题是一个解决方案是:

NSString *valueToSave = @"someValue";
[[NSUserDefaults standardUserDefaults]
    setObject:valueToSave forKey:@"preferenceName"];
Run Code Online (Sandbox Code Playgroud)

并在以后取回它:

NSString *savedValue = [[NSUserDefaults standardUserDefaults]
    stringForKey:@"preferenceName"];
Run Code Online (Sandbox Code Playgroud)

当我解析像这样的JSON文件时,如何使用此方法?:

@implementation Videos

@synthesize tableView = _tableView, activityIndicatorView = _activityIndicatorView, movies = _movies;

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.title = @"Title";
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Menu"
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:(DEMONavigationController *)self.navigationController
                                                                            action:@selector(showMenu)];


    NSString *valueToSave = @"TitleString";
    [[NSUserDefaults standardUserDefaults]
     setObject:valueToSave forKey:@"title"];

    self.tableView.separatorColor = [UIColor clearColor];

    // Setting Up Activity Indicator View
    self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    self.activityIndicatorView.hidesWhenStopped = YES;
    self.activityIndicatorView.center = self.view.center; …
Run Code Online (Sandbox Code Playgroud)

json nsuserdefaults ios

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

使用NSMutableArray发送到不可变对象的突变方法

我发现由于未捕获的异常“ NSInternalInconsistencyException”而导致的“错误终止”应用程序,原因:“-[__ NSCFArray insertObject:atIndex:]:将变异方法发送给不可变对象”当我第二次将对象添加到可变数组时,第一次成功添加但第二次当它崩溃的应用程序,我认为当我添加对象到数组时有问题。下面的代码是崩溃。

- (void) viewWillAppear:(BOOL)animated
{

    if ([defaults objectForKey:@"Groups"] != nil)
    {
        NSLog(@"not nil defaults.");
        arrGroups = (NSMutableArray *)[defaults objectForKey:@"Groups"];
    }
    else
    {
        NSLog(@"nil defaults.");
        arrGroups = [[NSMutableArray alloc] init];
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

{

NSLog(@"button index == %ld",(long)buttonIndex);
//txtCategory = [[alertView textFieldAtIndex:0] text];

if (buttonIndex == 1)
{
    //[self addingCategory:self];
    NSLog(@"Adding Group name = %@",[[alertView textFieldAtIndex:0]text]);
    [arrGroups addObject:[[alertView textFieldAtIndex:0]text]]; **//Crash here! at the time of add second object or also when …
Run Code Online (Sandbox Code Playgroud)

objective-c nsuserdefaults nsmutablearray ios

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

NSUserDefaults保存两个导致崩溃的阵列

最近我正在学习NSUserDefaults,然后做了如下演示:

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSMutableArray *activity_array = [NSMutableArray array];
 NSMutableArray *movie_array = [NSMutableArray array];
 [defaults setObject:activity_array forKey:@"activity"];
 [defaults setObject:movie_array forKey:@"movie"];
 [defaults synchronize];
Run Code Online (Sandbox Code Playgroud)

然后我尝试编写以下内容,我将在这篇文章的持续时间内调用"code2":

 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
 NSMutableArray *array = [userDefault objectForKey:@"activity"];
 [array addObject:@"123"];
Run Code Online (Sandbox Code Playgroud)

演示仍然有效.
但是当我用以下代码替换"code2"时,演示崩溃了:

 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
 NSMutableArray *array = [userDefault objectForKey:@"movie"];
 [array addObject:@"123"];
Run Code Online (Sandbox Code Playgroud)

如您所见,差异是关键.
为什么会崩溃?

nsuserdefaults nsarray ios

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

是否有更好的方法将自定义类保存到NSUserDefaults而不是使用NSCoder编码和解码所有内容?

我当前的类有大约50行只是编码和解码变量,以便我的类与NSUserDefaults兼容.有没有更好的方法来处理这个?

例:

 init(coder aDecoder: NSCoder!) {
    lightEnabled = aDecoder.decodeBoolForKey("lightEnabled")
    soundEnabled = aDecoder.decodeBoolForKey("soundEnabled")
    vibrateEnabled = aDecoder.decodeBoolForKey("vibrateEnabled")
    pulseEnabled = aDecoder.decodeBoolForKey("pulseEnabled")
    songs = aDecoder.decodeObjectForKey("songs") as! [Song]
    currentSong = aDecoder.decodeIntegerForKey("currentSong")
    enableBackgroundSound = aDecoder.decodeBoolForKey("enableBackgroundSound")
    mixSound = aDecoder.decodeBoolForKey("mixSound")
    playSoundInBackground = aDecoder.decodeBoolForKey("playSoundInBackground")
    duckSounds = aDecoder.decodeBoolForKey("duckSounds")
    BPMBackground = NSKeyedUnarchiver.unarchiveObjectWithData(aDecoder.decodeObjectForKey("BPMBackgorund") as! NSData) as! UIColor!
    BPMPulseColor = NSKeyedUnarchiver.unarchiveObjectWithData(aDecoder.decodeObjectForKey("BPMPulseColor") as! NSData) as! UIColor!
    TempoBackGround = NSKeyedUnarchiver.unarchiveObjectWithData(aDecoder.decodeObjectForKey("TempoBackGround") as! NSData) as! UIColor!
    TempoPulseColor = NSKeyedUnarchiver.unarchiveObjectWithData(aDecoder.decodeObjectForKey("TempoPulseColor") as! NSData) as! UIColor!
    TimeBackGround = NSKeyedUnarchiver.unarchiveObjectWithData(aDecoder.decodeObjectForKey("TimeBackGround") as! NSData) as! UIColor!
    TimeStrokeColor = NSKeyedUnarchiver.unarchiveObjectWithData(aDecoder.decodeObjectForKey("TimeStrokeColor") as! NSData) as! UIColor! …
Run Code Online (Sandbox Code Playgroud)

archiving nsuserdefaults ios swift

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

从“ [任何]?”演员表 到不相关的类型'[String:String?]'总是失败

我使用以下代码通过UserDefaults存储应用设置:

var appSettings: [String: String?] {

    set { // On attempt to set new value for the dictionary
        UserDefaults.standard.set(newValue, forKey: "AppSettings")
        UserDefaults.standard.synchronize()
    }
    get { // On attempt to get something from dictionary
        if let settings = UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?] {
            return settings
        } else {
            return [:]
        }
    }}
Run Code Online (Sandbox Code Playgroud)

但是行if let settings = UserDefaults.standard.array(forKey: "AppSettings") as? [String: String?]导致警告:

从“ [任何]?”演员表 无关类型“ [String:String?]”始终失败

有什么想法如何在UerDefaults中保存此词典?

nsuserdefaults ios swift

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