Macos 在OSX应用程序中以编程方式清除用户默认值

Macos 在OSX应用程序中以编程方式清除用户默认值,macos,cocoa,nsuserdefaults,Macos,Cocoa,Nsuserdefaults,我正在使用我的应用程序的beta版本,我需要确保在第一次发布最终版本时,使用beta-tester的用户将使用完全清晰的用户默认设置启动应用程序。。。(我无法更改捆绑ID) 1)有没有办法通过编程清除用户默认值 2)将此应用程序沙箱化以提交应用程序商店对我有帮助吗?您可以这样删除它: NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] remo

我正在使用我的应用程序的beta版本,我需要确保在第一次发布最终版本时,使用beta-tester的用户将使用完全清晰的用户默认设置启动应用程序。。。(我无法更改捆绑ID)

1)有没有办法通过编程清除用户默认值


2)将此应用程序沙箱化以提交应用程序商店对我有帮助吗?

您可以这样删除它:

NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
要在你第一次发射时运行它,我只需要设置一个BOOL标志。一种方法如下:

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

你怎么了?如果您已正确注册默认值,这一行将重置为您提供的已注册默认值。

我是否需要为此操作设置特定权限?我不会对应用商店提交的内容进行沙箱处理。祝你好运@MatterGoal不,你应该在第一次加载时运行它。如果您在运行上述代码时遇到问题,另一种方法是为每个键移除
ObjectForkey
,或者用空字典替换
NSUserDefaults
。不过我上面列出的应该有用。谢谢@James我怎么能检查“第一次发射”?我曾经在我的用户默认设置中设置NSNumber参数,比如“first launch”并检查它。沙箱是新提交的要求吗?不是吗?我很确定我读过一些关于这个参数的东西。我不确定这个操作是否能按照我的需要工作,我读到它在重置之前同步了数据。我需要一些东西来完全删除以前创建的信息。来自Apple文档:italic同步对共享用户默认值对象所做的任何更改,并将其从内存中释放。italic接着说,“随后调用standardUserDefaults会使用标准搜索列表创建一个新的共享用户默认值对象。”我尝试使用此代码
[NSUserDefaults resetStandardUserDefaults];NSUserDefaults*def=[NSUserDefaults standardUserDefaults];
但是在
def
中我仍然找到了用户生成的数据。我遗漏了什么?