我想为我的NSUserDefault键设置一些初始值,以便应用程序的第一次运行具有一些合理的初始设置。 我以为我在应用程序包.plist中运行了一个简单的方法来执行此操作,但现在我找不到它。 有任何想法吗?

===============>>#1 票数:70 已采纳

您应该使用NSUserDefaultsregisterDefaults方法。 在包中准备包含默认首选项的plist文件,然后使用该plist注册默认值。

NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];

您必须在每次启动应用时执行此代码。 它会将这些值添加到用户默认层次结构中的单独域中。 每当您的应用程序的用户默认值未提供某个键的值时, NSUserDefaults将回退到此域并从那里检索该值。

===============>>#2 票数:5

如果您有许多默认值,请使用ola的答案 ,否则这对一些参数很有用

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) { 
    [defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];

    // Set initial values 
    ...

    [defaults synchronize];
}

===============>>#3 票数:0

if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
    [[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
    [[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];


    [[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];

    [[NSUserDefaults standardUserDefaults] synchronize];
}

注意:没有测试,是从内存中完成的

===============>>#4 票数:-1

-(void) loadDef
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    _removeAd=[userDefaults boolForKey:SAVE_AD_STATUS];

    NSString* strDefSetting=[userDefaults stringForKey:SAVE_STATUS_ADSETTING];
    if(strDefSetting==nil
       ||[strDefSetting isEqualToString:@""]
       )
    {
        strDefSetting=@"0.5";
    }

    _floatAdmob=strDefSetting.floatValue;//0.5;
}

  ask by Suz translate from so

未解决问题?本站智能推荐:

2回复

在构建时覆盖NSUserDefault首选项

我希望能够在我的iOS项目中的构建时设置应用程序首选项。 我知道我可以在xcode中创建不同的目标,但我认为我可能最终会使用的偏好量最终会导致我的项目中出现一些噩梦般的目标。 一个简单的例子是为默认值“amount”设置一个默认整数。 目前,'amount'在我的应用程序中名为'pre
2回复

访问plist值,返回null

我正在尝试访问NSUserDefaults plist中的NSNumber Plist条目。 最初将其设置为0,但是当我尝试访问它以检查该值时,它返回为null和imi,只是不确定为什么。 这是我正在使用的代码 我在我的应用程序委托的applicationDidBecomeAct
1回复

通过plist覆盖NSUserDefaults值

我已经创建了默认首选项plist文件,并且在启动应用程序时,我注册了这些默认值。 但是我允许用户更改一个设置,除了更改每个单独的设置外,它几乎更改了我已注册的所有设置。 基本上,我允许他们更改“主题”,该主题几乎会更改所有其他存储的设置。 当用户确实选择一个主题时,而不是为每个设置调用se
2回复

用NSUserDefault和.plist写入失败

我无法将一些信息写入.plist和NSUser Defaults文件中。 对于我已经发布的.plist,似乎没有什么不对: 如何将数组集更新到.plist词典中 对于NSUser Default,我正在执行以下操作: 我在徘徊,Xcode中是否有任何选项允许或禁止用户写入
2回复

NSUserDefaults设置捆绑包列表

我有一个应用程序,它使用我应该存储在NSUserDefaults设置根Plist中的url值从appDelegate的appDidFinishLoading方法加载时检查文件: 有一些静态: 当我NSLog nsUserDefURL时,我仍然在设置plist中获得默认值。 我进
1回复

iOS 9.2-无法在设备设置应用中查看从Settings.bundle注册的默认设置

我有一个使用Settings.bundle的项目,其中包括root.plist,其中包含要向用户默认值注册的键值对列表。 直到最近,这些值仍可以在设备的“设置”应用中查看和编辑。 现在,在设置中点击我的应用时,我什么都看不到-详细信息面板为空。 如何确保应用随附的Settings.bu
1回复

使用新版本的应用程序更新和更改设置plist文件

我在我的应用程序的resources文件夹中有一个默认设置plist文件,并在第一次启动时被复制到文档文件夹。 在应用程序的后续版本中,如何将文档中的plist设置与自上一版本以来添加的任何新键和值(可能是嵌套)合并? 我已经看到了一个模式,其中属性实际上是在应用程序中创建为NSDi
1回复

iPhone:无法访问.plist文件中的所有值

我有一个非常简单的root.plist文件,如下所示: 导航到iPhone的设置应用程序中的相关设置页面时,将显示所有字段,但是我无法从我的应用程序访问api_version_preference。 我试图将.plist文件作为字典打印出来,但我只看到用户名/密码字段中的值,所以我
9回复

Swift-如何为NSUserDefaults设置初始值

我有一个名为soundSwitch的开关,我正在使用用户默认值来保存按钮的状态,例如: 当前,当用户首次启动应用程序时,实际的默认值最初为false。 如果用户首次启动该应用程序且尚未对其进行配置,那么如何实现默认值true。 我在Objective-C中看到过方法,但是在S
1回复

初始化时的用户单例和nsuserdefault

我实际上有一个用户单例对象,其中填充了用户数据(名称,图片等)。 那不是敏感数据,所以我将它们存储在会话中 当我退出应用程序并重新启动时,单例初始化就是这样 所以我想知道是否存在像这样的整洁解决方案? 也许我所做的是个好主意?