2014-10-07 161 views
0

以前我的NSUserDefaults工作得很好,但升級到iOS 8後,它在我的模擬器(不知道真實的設備,因爲我沒有在真實設備iOS 8)失敗。我已在iOS7上進行測試,它正在模擬器和真實設備上工作。所以我不知道是iOS 8問題還是隻有iOS 8模擬器的問題。NSUserDefaults不工作在IOS 8模擬器

我的問題是,即使在我保存後,它總是返回空字符串。

我的代碼如下:

+(void)SetStringValueForConfigurationKey: (NSString *) _objectkey withValue:(NSString *)_value 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults synchronize]; //let's make sure the object is synchronized 
    [defaults setValue:_value forKey:_objectkey]; 
    [defaults synchronize];//make sure you're synchronized again 
} 

+(NSString *)GetStringValueForConfigurationKey: (NSString *)_objectkey 
{ 
    //create an instance of NSUserDefaults 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults synchronize]; //let's make sure the object is synchronized 
    if ([defaults stringForKey:_objectkey] == nil) 
    { 
     //I don't want a (null) returned 
     return @""; 
    } 
    else 
    { 

     return [defaults stringForKey:_objectkey]; 
    } 
} 

有什麼辦法,我可以在模擬器升級到iOS 8.0.2?或者我怎樣才能找到問題的原因?

謝謝。

+1

你試過用valueforkey嗎? – Rushabh 2014-10-07 06:52:32

回答

2

您嘗試設置

[defaults setValue:_value forKey:_objectkey]; 

但是你把後面

return [defaults stringForKey:_objectkey]; 

[defaults setObject:<#(id)#> forKey:<#(NSString *)#>]; 
[defaults objectForKey:<#(NSString *)#>]; 
+0

感謝您的建議.. – teapeng 2014-10-07 08:06:01

0

我發現根源嘗試,有iOS的7間不同的行爲和iOS 8.

更詳細地說,我在登錄屏幕上遇到了這個問題。在登錄屏幕本身,我有一個選擇,需要用戶選擇我通過「部分捲曲」轉換放入另一個視圖控制器。問題發生在這個轉變。

問題是低於該代碼內:

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 

} 

在iOS系統7,該功能只第一負載期間調用一次。但是在iOS 8中,當從「Partial Curl」VC返回到原始登錄VC時,它將被再次調用。

這是問題出現的地方。我重置了這個函數中的所有NSUserDefaults值,因此在iOS 8中,只要我存儲並轉回到登錄VC,所有的值都消失了。因此返回空值。我通過改變我的邏輯在這個功能來解決我的問題,以迎合iOS 8中的多個呼叫。

相關問題