`

iPhone 突然发现,setting配置文件中的DefaultValue可能拿不了值

 
阅读更多

按照我的想法,如果用户没有在setting设置值且有default-value,那么应该获取的是default-value,因为打开setting也能看见这些值.但是今天突然发现好像不是那么会事.获取的是null.看了AppPrefs的代码,它也进行了判断.如下:

 

 

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
	[window addSubview:[navigationController view]];
	
	NSString *testValue = [[NSUserDefaults standardUserDefaults] stringForKey:kFirstNameKey];
	if (testValue == nil)
	{
		// no default values have been set, create them here based on what's in our Settings bundle info
		//
		NSString *pathStr = [[NSBundle mainBundle] bundlePath];
		NSString *settingsBundlePath = [pathStr stringByAppendingPathComponent:@"Settings.bundle"];
		NSString *finalPath = [settingsBundlePath stringByAppendingPathComponent:@"Root.plist"];

		NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:finalPath];
		NSArray *prefSpecifierArray = [settingsDict objectForKey:@"PreferenceSpecifiers"];

		NSString *firstNameDefault;
		NSString *lastNameDefault;
		NSNumber *nameColorDefault;
		NSNumber *backgroundColorDefault;
		
		NSDictionary *prefItem;
		for (prefItem in prefSpecifierArray)
		{
			NSString *keyValueStr = [prefItem objectForKey:@"Key"];
			id defaultValue = [prefItem objectForKey:@"DefaultValue"];
			
			if ([keyValueStr isEqualToString:kFirstNameKey])
			{
				firstNameDefault = defaultValue;
			}
			else if ([keyValueStr isEqualToString:kLastNameKey])
			{
				lastNameDefault = defaultValue;
			}
			else if ([keyValueStr isEqualToString:kNameColorKey])
			{
				nameColorDefault = defaultValue;
			}
			else if ([keyValueStr isEqualToString:kBackgroundColorKey])
			{
				backgroundColorDefault = defaultValue;
			}
		}

		// since no default values have been set (i.e. no preferences file created), create it here		
		NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
										firstNameDefault, kFirstNameKey,
										lastNameDefault, kLastNameKey,
										nameColorDefault, kNameColorKey,
										backgroundColorDefault, kBackgroundColorKey,
									  nil];
		[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
		[[NSUserDefaults standardUserDefaults] synchronize];
	}
	
	// we're ready to do, so lastly set the key preference values
	firstName = [[NSUserDefaults standardUserDefaults] stringForKey:kFirstNameKey];
	lastName = [[NSUserDefaults standardUserDefaults] stringForKey:kLastNameKey];
	textColor = [[NSUserDefaults standardUserDefaults] integerForKey:kNameColorKey];
	backgroundColor = [[NSUserDefaults standardUserDefaults] integerForKey:kBackgroundColorKey];
}


 
  • 大小: 64 KB
分享到:
评论
2 楼 mislay 2010-11-29  
pixelmator
1 楼 sharewind 2010-11-02  
请教一下你这截图用的工具是啥来着

相关推荐

    运营商配置文件for A1429 iPhone5

    此外,虽然这个配置文件是为A1429 iPhone 5设计的,但不适用于其他型号的iPhone或运营商。如果用户使用的是其他型号的iPhone,或者不是中国联通的用户,尝试安装这个配置文件可能不会产生任何效果,甚至可能导致网络...

    iphone 开发 Setting.bundle 设置束模版

    每个条目通常包括一个`Key`(用于在代码中引用设置值)、`Title`(显示给用户的文本)、`Type`(设置的控件类型,如`PS开关`、`PSMultiValueSpecifier`等)和`DefaultValue`(默认的设置值)。 3. **Subspec**:`...

    iPhone11的48.0 IPCC文件(提取自IOS15.1) .zip

    标题中的“iPhone11的48.0 IPCC文件”指的是iPhone 11设备上用于配置网络设置的特定文件。IPCC(Internet Provisioning Configuration Client)是Apple为iOS设备设计的一种文件格式,它包含了运营商的配置信息,如...

    iphone配置文件,用于代理配置

    iphone蜂窝网络代理配置文件

    iphone ipcc

    标题中的“iPhone IPCC”指的是苹果(Apple)iPhone设备上的国际移动用户识别码(IMSI)配置文件(Carrier Settings Configuration Profile,简称IPCC)。这些文件在iOS系统中用于更新运营商设置,比如数据网络、...

    iphone6-广电IPCC文件.zip

    基于iOS12.4(36.0.1)_CMCC_cn_iPhone 版本的IPCC修改的,iphone6可用的支持广电4G的IPCC文件。语音、数据、短信均可用。下载后直接把文件后缀名修改为.ipcc,使用i4刷入后,开下飞行就可以了。

    iphone 电信运营商文件36.1

    【iPhone 电信运营商文件36.1】是一个重要的更新,主要针对使用中国电信服务的iPhone用户。这个文件,名为“ChinaTelecom_USIM_cn_iPhone_36.1.ipcc”,是苹果公司为优化电信网络连接而发布的配置文件。在本文中,...

    iPhone实用配置工具

    此外,配置工具可能还支持创建和应用配置描述文件,这些文件可以用来批量设置多个iPhone设备,例如在企业环境中为员工设备预设公司政策。用户也可以通过配置工具来管理设备的屏幕使用时间、应用限制、无线网络设置等...

    iPhone 配置实用工具

    iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具iPhone 配置实用工具

    iphone13 ios ipcc52.0.zip

    标题 "iphone13 ios ipcc52.0.zip" 暗示了这可能是一个针对iPhone 13设备的iOS更新文件,其中包含了IPCC(International Provider Configuration)文件。IPCC文件是苹果设备用于设置运营商配置的重要文件,它通常...

    iphone配置实用工具

    在当今科技日新月异的时代,智能手机已经成为我们日常生活中不可或缺的一部分,尤其是苹果公司的iPhone,凭借其出色的用户体验和强大的功能深受用户喜爱。然而,有时我们可能会遇到一些网络连接问题,例如无法正常接...

    iphone13通用ipcc49.0.zip

    标题中的“iphone13通用ipcc49.0.zip”表明这是一个与苹果iPhone 13设备相关的软件更新或配置文件,IPCC(International Provider Configuration)是Apple用来管理运营商设置的一种文件格式。这些设置通常涉及手机的...

    iphone6模型-分层文件

    在【压缩包子文件的文件名称列表】中看到"iPhone-6",这可能是指包含iPhone 6模型的主PSD文件。通常,这样的文件可能会包含多个图层组,每个图层组代表手机的不同部分,如屏幕、摄像头、按钮等。在文件内,每个元素...

    ifunbox_sc iphone文件查看器

    这意味着用户可以查看并修改iPhone的系统配置文件,这对于调试应用程序、修复错误或者进行个性化定制非常有用。但需要注意的是,不正确的操作可能会导致系统不稳定,因此建议非专业人士谨慎操作。 此外,iFunbox_SC...

    iOS 12下载 配置文件

    在本话题中,我们将深入探讨如何通过下载和安装配置文件来获取iOS 12的beta测试版。 首先,"iOS 12下载 配置文件"指的是为了获得iOS 12 beta测试版,用户需要在设备上安装一个特定的配置文件。这个配置文件,名为...

    iphone5s ipcc文件,运营商文件升4G网络

    在IT领域,特别是苹果iOS设备的用户,可能会遇到与iPhone5s相关的网络升级问题,而“iphone5s ipcc文件,运营商文件升4G网络”就是解决此类问题的关键。首先,我们来了解一下IPCC(International Provider ...

    ios7.0配置文件

    配置文件在iOS开发中的作用主要包括指定应用的代码签名、设备兼容性、部署目标等。这些设置会影响应用的安装、运行和权限请求。在Xcode中,开发者可以在项目设置的“General”部分找到“Deployment Info”,在这里...

    iphone备份原文件

    在“压缩包子文件的文件名称列表”中提到了"iphone4或4S.png原机备份",这可能是iPhone 4或4S设备的屏幕截图,或者是该设备备份过程中的一个步骤说明图像。通常,备份过程中不会包含.png文件,除非是用户手动添加或...

    IPhone文件浏览器

    2. **ApplePNG.sln**:这可能是一个与图像处理相关的子项目,可能是用于处理或解析iPhone上的PNG图片文件。 3. **iPhoneBrowser.suo** 和 **ApplePNG.suo**:这两个是Visual Studio的用户选项文件,存储了开发环境的...

    Iphone文件管理软件

    在数字化时代,智能手机成为了我们日常生活和工作中不可或缺的一部分,而苹果公司的iPhone更是以其出色的用户体验赢得了广大用户的青睐。然而,对于许多用户来说,如何有效地管理和组织iPhone上的文件,却是一项看似...

Global site tag (gtag.js) - Google Analytics