Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSUserDefaults拒绝存储NSString对象_Ios_Objective C_Nsuserdefaults - Fatal编程技术网

Ios NSUserDefaults拒绝存储NSString对象

Ios NSUserDefaults拒绝存储NSString对象,ios,objective-c,nsuserdefaults,Ios,Objective C,Nsuserdefaults,我试图在包装器类中隐藏我的设置,以便可以通过属性读取和设置配置。但由于未知原因,以下setter未按预期保存值: - (void)setCountryCode:(NSString *)countryCode { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if (countryCode) { [defaults setObject:@"CountryCode" forKey:c

我试图在包装器类中隐藏我的设置,以便可以通过属性读取和设置配置。但由于未知原因,以下setter未按预期保存值:

- (void)setCountryCode:(NSString *)countryCode
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (countryCode) {
        [defaults setObject:@"CountryCode" forKey:countryCode];
    } else {
        [defaults removeObjectForKey:@"CountryCode"];
    }
    if (![defaults synchronize]) {
        ALog(@"Something unexpected went wrong. Wasn't able to save CountryCode to NSUserDefaults!"); // Never logged, since there doesn't seem to be an error.
    }
    _countryCode = countryCode;
}
但在尝试恢复时,它总是检索
nil

- (id)init
{
    self = [super init];
    if (self) {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        _countryCode = [defaults objectForKey:@"CountryCode"];
    }
    return self;
}
我做错了什么?

而不是这个:

[defaults setObject:@"CountryCode" forKey:countryCode];
我想你应该这样做:

[defaults setObject:countryCode forKey:@"CountryCode"];
与此相反:

[defaults setObject:@"CountryCode" forKey:countryCode];
我想你应该这样做:

[defaults setObject:countryCode forKey:@"CountryCode"];

您正在
setObject:forKey:
中切换参数。尝试:

[defaults setObject:countryCode forKey:@"CountryCode"];

您正在
setObject:forKey:
中切换参数。尝试:

[defaults setObject:countryCode forKey:@"CountryCode"];

还包括方法调用,在其中设置值键和对象位于错误的位置。尝试交换它们。还包括方法调用,在其中设置值键和对象位于错误的位置。尝试交换它们。