开源中国iOS源码
请详细阅读《README.md》这里不再详述。
按照README.md进行操作后就可以模拟调试了。
查看源码
首先打开AppDelegate.m文件找到
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 方法中的第一行就是配置inNightMode
_inNightMode = [Config getMode];
其中Config类就是对客户端的一个简单的配置功能,我们打开实现文件可以发现使用的NSUserDefaults对数据进行简单的存储。如
//保存账号信息。
+ (void)saveOwnAccount:(NSString *)account andPassword:(NSString *)password
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:account forKey:kAccount];
[userDefaults synchronize];
[SSKeychain setPassword:password forService:kService account:account];
}
接下来我们就说一下NSUserDefaults的用法。
NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信息,这时候就不能直接存储到NSUserDefaults了。
了解NSUserDefaults以及它可以直接存储的类型
NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一个前提,也是大家喜欢用它保存简单数据的一个主要原因。
使用 NSUserDefaults 存储自定义对象的最初,我们必须认识NSUserDefaults可以存储哪一些类型的数据,下面一一列出:
NSUserDefaults支持的数据类型有:NSNumber(NSInteger、float、double),NSString,NSDate,NSArray,NSDictionary,BOOL.
简单使用
//将NSString 对象存储到 NSUserDefaults 中
NSString *name = @"Lily";
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setObject: name forKey:@"name"];
//将数据取出
NSUserDefaults *user = [NSUserDefaults standerUserDefaults];
NSString *name2 = [user objectForKey:@"name"];
注意:
- 对相同的Key赋值约等于一次覆盖,要保证每一个Key的唯一性.
- NSUserDefaults 存储的对象全是不可变的(==这一点非常关键,弄错的话程序会出bug==)。
取出数据是不可变的,想要用NSUserDefaults中的数据给可变数组赋值需要进行一下转换。
NSUserDefaults *user = [NSUserDefaults standardUserDefaults]; //可以用alloc 方法代替 NSMutableString *mutableString = [NSMutableArray stringWithString:[user objectForKey:@"name"]];
如果存储对象则需要进行归档将数据转换为NSData,相对来说比较复杂,不建议使用此方法。