2014-09-19 28 views
7

的Xcode 6NSUserDefaults設備模擬器(iPhone 5,iPhone 6等,模擬器)不起作用。6的Xcode NSUserDefaults的不工作

如果您在真實設備上測試,它的工作原理非常完美。有人知道如何將這些信息發送給Apple?我試圖聯繫Apple,但我沒有收到答覆。

我無法測試真正的iPhone6或iPhone6 Plus,因爲在我的國家尚不可用。

我的代碼(就是一個例子),其在設備上運行完美:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

NSString *appTheme = [defaults objectForKey:@"theme_preference"]; 

if ([appTheme isEqualToString:@"color0"]) { 

} else { 

} 

也許,我沒有表達清楚我自己。

用戶在「iPhone o iPad設置」中必須更改應用程序的設置參數。

設置由「Settings.bundle」的「Root.plist」實現。

也就是說,我嘗試測試用戶更改應用程序的參數。但在源代碼中,我沒有看到這些變化。 我一直跟設備模擬器(Xcode6)

App Settings

+0

運行哪個版本的iOS? – trojanfoe 2014-09-19 09:49:04

+2

我看到'NSUserDefaults'類似的問題。我認爲它只是在當前版本中被打破:版本6.0.1(6A317)。也許下一個版本會解決這個問題?但願如此。 – siannopollo 2014-09-19 15:36:59

+0

我的版本的模擬器是v8.0(550.1),它不能正常工作 - 如上所述。 – 2014-09-24 13:04:32

回答

2

今天我終於解決了這個問題。我安裝了Xcode(版本6.1)的最新更新,然後我重置了模擬器。

然後我訪問了我的設置應用程序。直到您打開應用程序的設置,設置不會被複制到模擬器(或真實設備)

至少一次訪問您的應用程序設置是至關重要的。

0

嘗試保存的數據是這樣的:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:@"color0" forKey:@"theme_preference"]; 
[defaults synchronize]; 

再後來稱之爲:

NSString *appTheme = [defaults objectForKey:@"theme_preference"]; 
if ([appTheme isEqualToString:@"color0"]) { 

} else { 

} 
+0

我嘗試測試用戶更改應用程序的參數。但在源代碼中,我沒有看到這些變化。我總是談論設備模擬器(Xcode6) – Markus 2014-09-19 14:13:56

+0

這是不正確的。如果你的默認參數是一個整數(例如),你必須調用它:[defaults integerForKey:@「strokeSize_preference」];這是不正確的:objectForKey – Markus 2014-10-28 14:40:44

0

這是一個現在與xCode6和ios8共同的問題。

我發現的是當你遇到這個NSUserDefaults問題時,重置模擬器的內容和設置。

當我從模擬器中刪除應用程序時,userdefaults的值未被清除。

然後我重置我的模擬器,它爲我工作得很好。

因此,截至目前爲止,直到蘋果給出了一個解決這個問題,在模擬器上測試的最好方法是重置模擬器,每當你想刪除應用程序。

它爲我工作。希望它也能幫助別人。

0

這是一個iOS模擬器的bug,你應該去iOS模擬器>重置內容和設置來重置設備。

+0

在我的情況:沒有工作。問題依然存在。 – Markus 2014-10-28 14:41:37

0

轉到菜單中的iOS模擬器,然後單擊重置內容設置,現在您的問題應該解決。