首页 > 代码库 > 【OC学习-30】NSUserDefaults把数据存储在本地的一种方式

【OC学习-30】NSUserDefaults把数据存储在本地的一种方式

我们先创建一个NSUserDefaults对象(其实类似于一个字典),然后把数据写入到这个对象中,然后把这个对象里面的数据保存在本地。然后我们把这些代码删除掉,重新创建一个对象来调用在本地的数据,看是否能调出,如果能,说明之前已经成功把数据本地化了。


(1)我们创建一个空的application。


(2)把AppDelegate.m下面的那些函数都删除掉。在第一个函数里面补充如下代码,然后点击运行。

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    //以下是新添加的代码
    NSArray *arr1=@[@"111",@"222"];
    NSUserDefaults *userDef=[NSUserDefaults standardUserDefaults];//这个对象其实类似字典,着也是一个单例的例子
    [userDef setObject:arr1 forKey:@"array"];
    [userDef setInteger:123 forKey:@"number"];
    [userDef synchronize];//把数据同步到本地
    
   return YES;
}

@end

(3)把上面代码删除,然后添加如下代码,点击运行。

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];   
    //以下是新增代码
    //看数据是否已经在本地,即注销上述语句,在本地调用数据
    NSUserDefaults *userDefault=[NSUserDefaults standardUserDefaults];
    NSInteger *num1=[userDefault integerForKey:@"number"];
    NSArray *arr2=[userDefault objectForKey:@"array"];
    NSLog(@"%d,%@",num1,arr2);
    return YES;
}
@end

(4)运行结果:

123,(
    111,
    222
)

我们把第一次添加的代码已经删除后,第二次代码运行时还能调出数据,说明数据已经存储在本地了。

(5)其实这个数据应该保存在一个.plist为后缀的文件中,可惜没找到这个文件,或者是找到了,但是没看到数据,亦可能是已经保存了源文件了,可能就没必要单独创建个新文件保存了,这个做项目的时候以后再慢慢找。

【OC学习-30】NSUserDefaults把数据存储在本地的一种方式