gpt4 book ai didi

objective-c - 如何从 Objective-c/Swift 中的 settings.bundle 中检索值?

转载 作者:太空狗 更新时间:2023-10-30 03:13:24 27 4
gpt4 key购买 nike

我创建了一个项目,用于设置和检索 settings.bundle 中的值。我还在 settings.bundle 文件中设置了一些默认值。现在的问题是当我检索值时

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
loginName.text = [defaults objectForKey:@"login_name"];

它第一次显示为空,但值是在 iPhone 应用程序设置中设置的。如果我更改值或手动设置它,则会正确检索值。

帮帮我

最佳答案

虽然您定义了默认设置,但它们并没有真正存储为值。它们存储为默认值。如果您尝试读取它,该值为空。默认设置是另一个属性,因为值是。但是不代表会把默认值写成默认值。

我所做的是,首先,检查某些设置(我确信它应该有一个值)是否存储了任何东西。如果它什么都没有,那么我会写下所有默认值。

这是一个例子。

在 AppDelegate.m 上,我检查 email_notificaciones_preference 是否有值,如果没有,我将所有默认设置写入每个设置。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSUserDefaults * standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString * email_notificaciones_preference = [standardUserDefaults objectForKey:@"email_notificaciones_preference"];
if (!email_notificaciones_preference) {
[self registerDefaultsFromSettingsBundle];
}

}

这个函数是我用来为每个元素编写默认值的。

#pragma NSUserDefaults
- (void)registerDefaultsFromSettingsBundle {
// this function writes default settings as settings
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
if(!settingsBundle) {
NSLog(@"Could not find Settings.bundle");
return;
}

NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]];
NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];

NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
for(NSDictionary *prefSpecification in preferences) {
NSString *key = [prefSpecification objectForKey:@"Key"];
if(key) {
[defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
NSLog(@"writing as default %@ to the key %@",[prefSpecification objectForKey:@"DefaultValue"],key);
}
}

[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];

}

希望对您有所帮助。

关于objective-c - 如何从 Objective-c/Swift 中的 settings.bundle 中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com