2010-07-02 98 views
0

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

-(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"]; 
} 

任何人都可以请帮忙吗?

我在模拟器上运行这个。所有的值[即字符串]到位,只是没有插入。另外,如果我打印了控制台中打印的这行代码,则打印存储值的变量的描述: 表达式中的语法错误,靠近`variable)'。

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

Thanx提前。

回答

0

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

我想这将表明你已经改变了公司莫名其妙,它的编码不正确?


PS究竟什么是你打字尝试“打印说明” - 如果它是一个语法错误,我们应该能够很容易地解决这个问题?

+0

它看起来不像一个语法错误。我在Print Description中得到每个语句的错误,并且该对象不是看起来被分配的,而是表现为“ neha 2010-07-02 08:53:04

+0

嗯,这很奇怪。 您可以编辑您的问题并添加打印说明中使用的代码。还添加控制台错误。也许其他人会有另一种想法! – deanWombourne 2010-07-02 10:59:24

+0

Thanx deanWombourne试图帮助我。我不知道确切的问题,但我通过在.h文件中声明所有变量来解决它。它解决了时间问题。本地声明的变量本身不可用于访问。 – neha 2010-07-02 12:42:35

0

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