2010-07-02 84 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調試配置(不是發行版或發佈版)構建&調試。希望這可以幫助!