2011-11-16 63 views
4

我正在測試我的應用程序版本,我需要確保最初發布最終版本的Beta版測試人員將完全啓動應用程序清除用戶默認設置...(我無法更改軟件包ID)。在OS X應用程序中以編程方式清除用戶默認設置

1)有沒有辦法以編程方式清除用戶默認值?

2)將沙盒這個應用程序的App Store提交幫助我嗎?

回答

4

您可以像這樣刪除它:

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.");}  
} 
+0

我需要爲此操作設置特定的權利嗎? – MatterGoal

+0

,我不會爲任何App Store提交沙箱。祝你好運! – Baub

+0

@MatterGoal不要,你應該很好地在第一次加載時運行它。如果你在運行上面的代碼時遇到了麻煩,另一種方法是爲每個鍵「removeObjectForKey」,或者用一個空字典替換你的'NSUserDefaults'。我上面列出的應該可以工作。 – Baub

2

+[NSUserDefaults resetStandardUserDefaults]有什麼問題?如果您已正確註冊了默認值,則該單行將重置爲您提供的已註冊默認值。

+0

我不確定此操作是否正常工作,因爲我需要在重置之前同步數據。我需要一些東西來徹底刪除以前創建的信息。 來自Apple文檔: _italic_同步對共享用戶defaults對象所做的任何更改並將其從內存中釋放_italic_ – MatterGoal

+0

然後它繼續說:「standardUserDefaults的後續調用會使用標準搜索列表創建新的共享用戶默認值對象「。 –

+0

我用這段代碼試過 '[NSUserDefaults resetStandardUserDefaults]; NSUserDefaults * def = [NSUserDefaults standardUserDefaults];' 但是在'def'中我仍然可以找到用戶生成的數據。 我錯過了什麼? – MatterGoal

相關問題