2016-07-25 70 views
-1

我有一个名为“的EntityType”有一个字符串“名字”,我使用NSUserDefaults的保存它,所以我尝试了这个类的变量:目标C - 保存里面NSUserDefaults的

if (button.selected) 
{ 
    [button setSelected:YES]; 
    [[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithBool:YES] forKey:@"buttonSelected"]; 
} 

我想访问从另一个类的变量,并将其保存在NSUserDefaults内

+0

你为什么要在'NSUserDefaults'中保存一个按钮的选中状态? – Droppy

+0

,因为我有一个条件取决于按下按钮 – aboodmanna

+0

所以你正在使用'NSUserDefaults'来传递应用程序的不同部分之间的信息? – Droppy

回答

0

您错过了同步呼叫。请使用此命令将其保存。

if (button.selected) 
{ 
    [button setSelected:YES]; 
    [[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithBool:YES] forKey:@"buttonSelected"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

} 

把它找回来以后

NSNumber* savedValue = [[NSUserDefaults standardUserDefaults] 
    objectForKey:@"buttonSelected"]; 

这是,如果你想只存储值。 如果要存储您的自定义对象看看这个链接 How to store custom objects in NSUserDefaults

+0

在哪里我应该把字符串“name”这是属性在我的EntityType类? – aboodmanna

+0

你不需要同步,这只会强制将用户默认设置写入文件,无论如何都会周期性发生。您可以读写内存中的默认值,而无需写入文件。 –

+0

我仍然没有得到它,我应该在哪里放置属性在我的EntityType类中的字符串“name”的值(而不是关键字)? – aboodmanna

0

您可以在该应用的任何获得NSNumber对象一样,

NSNumber *num = [[NSUserDefaults standardUserDefaults] objectForKey:@"buttonSelected"]; 

+0

我需要保存EntityType类中属性的字符串“name” – aboodmanna

0

在您的EntityType类中,实现了编码和解码(有关你自己的对象的东西)以下两种方法:

- (void)encodeWithCoder:(NSCoder *)encoder { 
    //Encode properties, other class variables, etc 
    [encoder encodeObject:self.name forKey:@"name"]; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if((self = [super init])) { 
     //decode properties, other class vars 
     self.name = [decoder decodeObjectForKey:@"name"]; 
    } 
    return self; 
} 

读写从NSUserDefaults

- (void)saveCustomObject:(MyObject *)object key:(NSString *)key { 
    NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:object]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:encodedObject forKey:key]; 
    [defaults synchronize]; 

} 

- (MyObject *)loadCustomObjectWithKey:(NSString *)key { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *encodedObject = [defaults objectForKey:key]; 
    MyObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject]; 
    return object; 
} 

代码从借来的:save class in NSUserDefaults