我正在測試我的應用程序版本,我需要確保最初發布最終版本的Beta版測試人員將完全啓動應用程序清除用戶默認設置...(我無法更改軟件包ID)。在OS X應用程序中以編程方式清除用戶默認設置
1)有沒有辦法以編程方式清除用戶默認值?
2)將沙盒這個應用程序的App Store提交幫助我嗎?
我正在測試我的應用程序版本,我需要確保最初發布最終版本的Beta版測試人員將完全啓動應用程序清除用戶默認設置...(我無法更改軟件包ID)。在OS X應用程序中以編程方式清除用戶默認設置
1)有沒有辦法以編程方式清除用戶默認值?
2)將沙盒這個應用程序的App Store提交幫助我嗎?
您可以像這樣刪除它:
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
要在第一次啓動運行它,我只想設置一個布爾標誌。一種方法如下:
- (void)applicationDidFihishLaunching
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([[prefs objectForKey:@"secondOrMoreTimeLoading"]boolValue]==0) //so if there is nothing there...
{
NSLog(@"This is the first time the user has loaded the application. Welcome!");
//run the code above here, then change our flag to 1 so that it never runs this again (unless the prefs are reset elsewhere)
[prefs setObject:[NSNumber numberWithBool:1] forKey:@"secondOrMoreTimeLoading"];
}
else{NSLog(@"Welcome back, user.");}
}
+[NSUserDefaults resetStandardUserDefaults]有什麼問題?如果您已正確註冊了默認值,則該單行將重置爲您提供的已註冊默認值。
我不確定此操作是否正常工作,因爲我需要在重置之前同步數據。我需要一些東西來徹底刪除以前創建的信息。 來自Apple文檔: _italic_同步對共享用戶defaults對象所做的任何更改並將其從內存中釋放_italic_ – MatterGoal
然後它繼續說:「standardUserDefaults的後續調用會使用標準搜索列表創建新的共享用戶默認值對象「。 –
我用這段代碼試過 '[NSUserDefaults resetStandardUserDefaults]; NSUserDefaults * def = [NSUserDefaults standardUserDefaults];' 但是在'def'中我仍然可以找到用戶生成的數據。 我錯過了什麼? – MatterGoal
我需要爲此操作設置特定的權利嗎? – MatterGoal
,我不會爲任何App Store提交沙箱。祝你好運! – Baub
@MatterGoal不要,你應該很好地在第一次加載時運行它。如果你在運行上面的代碼時遇到了麻煩,另一種方法是爲每個鍵「removeObjectForKey」,或者用一個空字典替換你的'NSUserDefaults'。我上面列出的應該可以工作。 – Baub