iOS 数据存储--NSUserDefault

来源:互联网 发布:少年三国志五星刀数据 编辑:程序博客网 时间:2024/06/03 03:20

iPhone存储数据一般有三种方式:数据库,NSUserDefaults和文件。

其中NSUserDefaults适合存储数据量小的数据,例如用户配置。并不是所有的东西都能往里面放,只支持:NSString, NSNumber, NSData, NSArray, NSDictionary

    //creat NSUserDefaults

    NSUserDefaults *userdefaults = [NSUserDefaultsstandardUserDefaults];

    //add objects

    [userdefaultssetBool:NO forKey:@"boolKey"];

    [userdefaultssetValue:@"hello"forKey:@"stringKey"];

   NSArray *arr = [NSArrayarrayWithObjects:@"one",@"three",@"two",nil];

    [userdefaultssetValue:arr forKey:@"arrayKey"];

    //remove objects

    [userdefaultsremoveObjectForKey:@"stringKey"];

    

    //为了确保数据被保存到disk(不写的话也会保存)

    [userdefaultssynchronize];


    //get objects 

   BOOL ok = [userdefaults boolForKey:@"boolKey"];

   NSArray *array = [userdefaults objectForKey:@"arrayKey"];


如果存储自定义对象,需要将对象转换成NSData,然后存入userdefaults。

@interface People :NSObject <NSCoding>

{

   NSString *_name;

   NSString *_age;

}

@property (nonatomic,retain) NSString *name;

@property (nonatomic,retain) NSString *age;

@end;


@implementation People

@synthesize name =_name, age = _age;

- (id) initWithCoder: (NSCoder *)coder

{

   if (self = [superinit])

    {

       self.name = [coderdecodeObjectForKey:@"name"];

       self.age = [coderdecodeObjectForKey:@"age"];

    }

    return self;

}

- (void) encodeWithCoder: (NSCoder *)coder

{

    [coder encodeObject:self.nameforKey:@"name"];

    [coder encodeObject:self.ageforKey:@"age"];

    

}


@end


//将对象转换成NSData,然后存入NSUserDefaults

   People *people = [[Peoplealloc] init];

    people.name =@"lilei";

    people.age =@"18";

    NSUserDefaults *userDefault = [NSUserDefaultsstandardUserDefaults];

   NSData *peopleData = [NSKeyedArchiverarchivedDataWithRootObject:people];

    //save peopleData

    [userDefaultsetObject:peopleData forKey:@"peopleKey"];

    //get Data

    peopleData = [userDefaultobjectForKey:@"peopleKey"];

    people = [NSKeyedUnarchiverunarchiveObjectWithData:peopleData];


在模拟器下你可以在下面地址看到你所存储的内容:

Library/Application Support/iPhone Simulator/6.1/Application/[your project]/Library/Preferences/[XXXX.plist]