UserDefaults没有保存值iphone

时间:2010-07-02 06:56:11

标签: iphone nsuserdefaults

这是我面临的一个奇怪问题。我用来将我的值保存到nsuserdefaults的以下代码工作正常..保存并检索所有值但它现在完全让我疯了。它没有保存任何值,并且检索到的值看起来无效。我正在使用编码和解码来保存名为companyObject的自定义对象。不存储单个值。

-(void)saveCustomObject
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *companyArray = [[NSMutableArray alloc]init];
for(Company *companyObj in companyObjectsArray)
{
    [companyArray addObject: [NSKeyedArchiver archivedDataWithRootObject:companyObj]];
}

[defaults setObject:companyArray forKey:@"companyData"];
[defaults setObject:userCompanyInfo.sessionkey forKey:@"sessionkey"];
[defaults setObject:userCompanyInfo.deviceid forKey:@"deviceid"];
[defaults setObject:userCompanyInfo.userid forKey:@"userid"];
[defaults setObject:userCompanyInfo.service_type forKey:@"service_type"];
[defaults setObject:userCompanyInfo.isduallogin forKey:@"isduallogin"]; 
[defaults setObject:userCompanyInfo.securitycode forKey:@"securitycode"];   

[defaults synchronize]; 
}



-(void)loadCustomObject
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *companies = [NSMutableArray array];
NSArray *oldCompanies = [[NSUserDefaults standardUserDefaults] arrayForKey:@"companyData"];
if( companies )
    {
        for( NSData *data in oldCompanies )
            {
                Company* companyObj = (Company*) [NSKeyedUnarchiver unarchiveObjectWithData:data];
                [companies addObject:companyObj];
            }
    }

NSString *sessionKey = [defaults stringForKey:@"sessionkey"];
NSString *deviceId = [defaults stringForKey:@"deviceid"];
NSString *userId = [defaults stringForKey:@"userid"];
NSString *service_type = [defaults stringForKey:@"service_type"];
NSString *isduallogin = [defaults stringForKey:@"isduallogin"];
NSString *securitycode = [defaults stringForKey:@"securitycode"];
}

有人可以帮忙吗?

我在模拟器上运行它。所有价值[即这里的字符串]到位,只是没有插入。另外,如果我打印在控制台中打印这一行,我会在其中存储值:             表达式中的语法错误,接近“变量”。

编辑: 当这部分运行时,这个应用程序实际上是在MAC PC上运行但现在我在macbook上运行它。这会造成这个问题吗?

提前完成。

2 个答案:

答案 0 :(得分:0)

因为您以前使用过此方法,所以可以将其与之后所做的任何更改进行比较。从版本控制开始工作时,您是否有一些代码?

我猜这会显示你已经以某种方式改变了公司并且编码不正确?


PS究竟是什么打字来尝试'打印说明' - 如果这是语法错误,我们应该能够很容易地修复它?

答案 1 :(得分:0)

如果要使用模拟器并获取变量值,则需要使用xcode调试配置(不是发布或分发)来构建和调试。希望这可以帮助!