功能创建一个test.plist文件,textInput作为输入,displayLabel作为显示,有一个按钮来触发保持程序triggerStorage;
-(void)triggerStorage
{
displayLabel.text = textInput.text;
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path=[paths objectAtIndex:0];
NSString *filename=[path stringByAppendingPathComponent:@"test.plist"]; //获取路径
NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename]; //读取数据
NSLog(@"dic2 is:%@",dic2);
//创建一个dic,写到plist文件里
NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:displayLabel.text,@"IP",nil]; //写入数据
[dic writeToFile:filename atomically:YES];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
NSMutableArray *resultData;
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path=[paths objectAtIndex:0];
NSLog(@"path = %@",path);
NSString *filename=[path stringByAppendingPathComponent:@"test.plist"];
//读文件
NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];
NSLog(@"dic is:%@",dic2);
if(dic2 == nil)
{
//1. 创建一个plist文件
NSFileManager* fm = [NSFileManager defaultManager];
[fm createFileAtPath:filename contents:nil attributes:nil];
}
else
{
resultData=[dic2 objectForKey:@"IP"];
if([dic2 count] > 0)
{
displayLabel.text = resultData;
}
else
{
displayLabel.text = @" ";
}
}
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] //按钮的初始化及触发条件设置
initWithTitle:@"保存"
style:UIBarButtonItemStylePlain
target:self
action:@selector(triggerStorage)] autorelease];
[super viewDidLoad];
}
------------------------------------------------------------------------------------------------------------------------------------------------------------
参考代码:
//1. 创建一个plist文件
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path=[paths objectAtIndex:0];
NSLog(@"path = %@",path);
NSString *filename=[path stringByAppendingPathComponent:@"test.plist"];
NSFileManager* fm = [NSFileManager defaultManager];
[fm createFileAtPath:filename contents:nil attributes:nil];
//NSDictionary* dic = [NSDictionary dictionaryWithContentsOfFile:plistPath];
//创建一个dic,写到plist文件里
NSDictionary* dic = [NSDictionary dictionaryWithObjectsAndKeys:@"sina",@"1",@"163",@"2",nil];
[dic writeToFile:filename atomically:YES];
//读文件
NSDictionary* dic2 = [NSDictionary dictionaryWithContentsOfFile:filename];
NSLog(@"dic is:%@",dic2);
通过读写 .plist 文件,我们可以在 iPhone 里记录或调取数据,下面就是 CocoaChina 会员 “pjk1129” 分享的读写 .plist 文件的代码
以name,phoneNumber,age三个字段为例。 iPhone 在文本框中输入数据,获取后装入数组中,然后把数组写入.plist文件
写操作
NSString *name=[txt1 text];
NSNumber *phoneNumber=[[NSNumber alloc] initWithInt:[[txt2 text] intValue]];
NSNumber *age=[[NSNumber alloc] initWithInt:[[txt3 text] intValue]];
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path=[paths objectAtIndex:0];
NSString *filename=[path stringByAppendingPathComponent:@"personal.plist"];
//先判断有没有创建。plist文件,没有就新建
if (NO == [[NSFileManager defaultManager] fileExistsAtPath:filename])
{
NSMutableArray *array=[[NSMutableArray alloc]init];
[array addObject:name];
[array addObject:phoneNumber];
[array addObject:age];
[array writeToFile:filename atomically:YES];
[array release];}
读操作
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *path=[paths objectAtIndex:0];
NSString *filename=[path stringByAppendingPathComponent:@"personal.plist"];
NSMutableArray *array=[[NSMutableArray alloc] initWithContentsOfFile:filename];
txt1.text=[array objectAtIndex:0];
txt2.text=[[NSString alloc] initWithFormat:@"%d",[[array objectAtIndex:1]intValue]];
txt3.text=[[NSString alloc] initWithFormat:@"%d",[[array objectAtIndex:2]intValue]];
[array release];