当前位置: 首页 > news >正文

一流的福州网站建设/app推广方案模板

一流的福州网站建设,app推广方案模板,wordpress调用最新文章模板,wordpress 菜单 链接地址原文:http://www.dimzzy.com/blog/2011/02/dancing-with-nsuserdefaults/ 在iOS app中,NSUserDefaults非常便利。程序员可以在其中存储应用程序选项,还可以通过iTunes备份它们——可以让它们在系统设置程序中显示。要实现这个,你需要创建一个…

原文:http://www.dimzzy.com/blog/2011/02/dancing-with-nsuserdefaults/

在iOS app中,NSUserDefaults非常便利。程序员可以在其中存储应用程序选项,还可以通过iTunes备份它们——可以让它们在系统设置程序中显示。要实现这个,你需要创建一个Settings.bundle并描述清楚你想在设置程序中显示的选项以及如何显示它们。我们来演示一下如何添加一个Bool值bounces到设置程序中。首先创建Settings.bundle(通过Xcode的New FileàResourcesàSettingsBundle模板)。编辑Root.plist文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plistversion="1.0">
<dict>
   
<key>StringsTable</key>
   
<string>Root</string>
   
<key>PreferenceSpecifiers</key>
   
<array>
       
<dict>
           
<key>Type</key>
           
<string>PSToggleSwitchSpecifier</string>
           
<key>Title</key>
           
<string>Bounces</string>
           
<key>Key</key>
           
<string>bounces</string>
           
<key>DefaultValue</key>
           
<true/>
       
</dict>
   
</array>
</dict>
</plist>

注意,我们把默认值设置为true。接下来,为Bounces属性创建helper类(用于存取该属性)。bounces属性是单例的,实现如下:

-(BOOL)bounces {
   
return[[NSUserDefaultsstandardUserDefaults] boolForKey:@"bounces"];
}

-(void)setBounces:(BOOL)bounces {
   
[[NSUserDefaultsstandardUserDefaults] setBool:bounces forKey:@"bounces"];
   
[[NSUserDefaultsstandardUserDefaults] synchronize];
}

 

这些东西你可能都知道,但这个代码里有两个Bug。

 

1. 如果存在默认值,你必需在Settings.bundle/Root.plist中加以说明同时需在代码中注册默认值。

 

也就是说,当你用NSUserDefaults读取属性时(至少是第一次),Root.plist中的默认设置是无效的。我不知道这种情况是否已documented,但我在测试中确实发现了这点。

要解决这个Bug,需要在你的Helpler类中加入下列方法:

+(void)initialize {
   
[[NSUserDefaultsstandardUserDefaults] registerDefaults:
       
[NSDictionarydictionaryWithObjectsAndKeys:
           
[NSNumber numberWithBool:YES],@"bounces",nil]];
}

译者注:

这段代码只在程序第一次运行时有效,如果第二次运行程序,则Defaults显示上次运行时修改过的值而不是默认值,如果你想再次看到默认值,只有把应用程序删除并重安装。其次,这段代码只能在设备上测试,在模拟器上看不到效果。


2.当应用程序进入后台,需要synchronize

发现这点时,我相当不解。当你的app转入后台,打开系统设置程序,改变属性值,然后切回app,你看不到新设置的属性值!要解决这个Bug,需要显式地调用synchronize方法:

-(void)applicationWillEnterForeground:(UIApplication*)application {
   
[[NSUserDefaultsstandardUserDefaults] synchronize];
   
// ...
}

这个问题并不会引起用户的注意,但一个高质量的应用程序应当注意这点。再次申明,本文内容不基于任何文档,仅仅是我在自己的测试中遇到的问题。

译者注:

实际上,苹果建议使用 NSUserDefaultsDidChangeNotifications通知来监听Preferences的改变。

注册观察者:

 NSNotificationCenter *center =[NSNotificationCenter defaultCenter];

[center addObserver:self

              selector:@selector(defaultsChanged:) 

                  name:NSUserDefaultsDidChangeNotification

                object:nil];

 

监听方法:

- (void)defaultsChanged:(NSNotification*)notification {

    // Get the user defaults

    NSUserDefaults *defaults = (NSUserDefaults*)[notification object];

 

    // Do something with it

    NSLog(@"%@", [defaultsobjectforKey:@"nameOfThingIAmInterestedIn"]);

}



http://www.lbrq.cn/news/1407097.html

相关文章:

  • 淘宝网作图做网站/啥是网络推广
  • 做窗帘网站/全国疫情最新信息
  • 第一次做网站不知道/百度官方版
  • 网站外链建设需要逐步进行适可优化即可/百度关键词排名用什么软件
  • 武汉做网站公司有哪些/网络广告设计
  • nike网站建设方案/公司营销网站建设
  • 2020互联网公司排名/seo就业
  • 长春网站建设新格/优化网哪个牌子好
  • 泉州市网站api建设/吉林seo推广
  • 手表二级市场网站/重庆网站优化软件
  • 太原网站建设培训/如何有效的推广宣传
  • 怎么查看网站服务器位置/千锋教育靠谱吗
  • 湖南省建设信息网站查询/网站内部链接优化方法
  • 自己怎么建设购物网站/百度竞价推广流程
  • 网站怎么做搜索引擎优化_/网站制作报价表
  • 家纺订单外发加工网/外链seo推广
  • 大型网站seo方案/域名解析查询站长工具
  • 腾龙时时彩做号网站/网站推广该怎么做
  • 南昌做网站哪家最好/搜狗推广助手
  • 建设工程司法解释/西安seo黑
  • 保山市建设局网站登录/西安百度网站快速优化
  • 顺德电子商务网站建设/免备案域名
  • 网站建设要学什么/以网红引流促业态提升
  • 泰安网站建设热线电话/全国病毒感染最新消息
  • 专门做考研的网站/优化排名seo
  • xyz域名做网站好么/色盲测试图
  • e时代速递搜索引擎网站建设/百度seo优
  • 小县城 交友网站 很难做/资源企业网站排名优化价格
  • 中国网站排名 优帮云/企业培训师
  • tech域名可以做网站吗/精准网络推广
  • 使用websockets中的一些问题和解决方法
  • vue3入门-v-model、ref和reactive讲解
  • 【lucene】tip文件详解
  • 【LeetCode题解】LeetCode 74. 搜索二维矩阵
  • Python 面向对象三大特性详解(与 C++ 对比)
  • 前端处理导出PDF。Vue导出pdf