您的位置:首页 > 移动开发 > IOS开发

字符串,数组和字典的简单本地存储!以及复杂类型对象的存储

2014-07-08 09:37 661 查看
- (void)searchDocmentPath
{

    //获取存储路径

    NSArray *path = 
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
   
NSLog(@"%@", path);
}

  1.字符串,数组和字典的简单本地存储

#pragma mark
获取documents文件夹位置
- (NSArray *)getPathOfDocuments{

    NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
   
return paths;
}

- (void)writeString
{

   
//获取文件路径并写入文件

    NSArray *path =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
   
NSString *str = [path
firstObject];
    str = [NSString
stringWithFormat:@"%@%@",str,@"/text.txt"];//创建text.txt文件

   
//初始化一个字符串
   
NSString *string =
@"快乐的山猫,快乐的吉米!";

    //错误提示
   
NSError *error = nil;

   
//将字符串写入文件

    [string writeToFile:str
atomically:YES
encoding:NSUTF8StringEncoding
error:&error];//将string写入到text.txt文件中
   
if (error) {
       
NSLog(@"%@", error);
    }
}

- (void)getString{

    //获取路径

    NSString *str = [NSString
stringWithFormat:@"%@%@",[[self
getPathOfDocuments]
firstObject],@"/text.txt"];
   
NSError *error = nil;

    //读取文件

    NSString *string = [[NSString
alloc] initWithContentsOfFile:str
encoding:NSUTF8StringEncoding
error:&error];
   
if(error){
       
NSLog(@"%@",error);
    }
else {
       
NSLog(@"string == %@",string);
    }
    [string
release];
}

- (void)getAndWrite//重复写入
{

   
//读取文件里的字符串

    NSString *str = [NSString
stringWithFormat:@"%@%@",[[self
getPathOfDocuments]
firstObject],@"/text.txt"];
   
NSError *error = nil;

    NSString *string = [[NSString
alloc] initWithContentsOfFile:str
encoding:NSUTF8StringEncoding
error:&error];

   
//初始化新的字符串

    NSString *newStr =
@"快乐的山猫,快乐的吉米!外加快乐的自己!!";
    string = [NSString
stringWithFormat:@"%@%@",string,newStr];

    [string writeToFile:str
atomically:YES
encoding:NSUTF8StringEncoding
error:&error];
   
if (error) {
       
NSLog(@"%@",error);
    }
}

#pragma mark
写入数组
- (void)writeArray{

    NSString *str = [NSString
stringWithFormat:@"%@%@",[[self
getPathOfDocuments]
firstObject],@"/array.txt"];
   
NSArray *array = [NSArray
arrayWithObjects:@"1",@"2",@"3",@"4",@"5",
nil];

    [array writeToFile:str
atomically:YES];
}

#pragma mark
读取数组
- (void)getArray{

    NSString *str = [NSString
stringWithFormat:@"%@%@",[[self
getPathOfDocuments]
firstObject],@"/array.txt"];

    NSArray *array = [[NSArray
alloc] initWithContentsOfFile:str];

    NSLog(@"array == %@",array);
    [array
release];
}

#pragma mark
写入字典
- (void)writeDictionary{

    NSString *str = [NSString
stringWithFormat:@"%@%@",[[self
getPathOfDocuments]
firstObject],@"/dic.txt"];

    NSDictionary *dic = [NSDictionary
dictionaryWithObjectsAndKeys:@"cat",@"1",@"dog",@"2",@"tager",@"3",
nil];

    [dic writeToFile:str
atomically:YES];
}

#pragma mark
读取字典
- (void)getDictionary{

    NSString *str = [NSString
stringWithFormat:@"%@%@",[[self
getPathOfDocuments]
firstObject],@"/dic.txt"];

    NSDictionary *dic = [NSDictionary
dictionaryWithContentsOfFile:str];

    NSLog(@" dic == %@",dic);
}

#pragma mark
写入data
- (void)writeData
{

    NSString *str = [NSString
stringWithFormat:@"%@data",[[self
getPathOfDocuments]
firstObject]];

    NSString *string =
@"那个谁,说你呢!就是那个谁!!";

    NSData *data = [string
dataUsingEncoding:NSUTF8StringEncoding];//将string转换为UTF8二进制编码格式

    [data writeToFile:str
atomically:YES];//写入文件
}

#pragma mark
读取data
- (void)readData
{

    NSString *str = [NSString
stringWithFormat:@"%@data",[[self
getPathOfDocuments]
firstObject]];

    NSData *data = [NSData
dataWithContentsOfFile:str];

    NSString *string = [[NSString
alloc] initWithData:data
encoding:NSUTF8StringEncoding];//将data转换为字符串
   
NSLog(@"string == %@", string);
}

- (void)userDefaultsWrite
{

    NSUserDefaults *defaults = [NSUserDefaults
standardUserDefaults];
    [defaults
setObject:@"dragon"
forKey:@"name"];

    

   
//同步存储(默认是异步)
    [defaults
synchronize];
}

- (void)readUserDefauts
{

    NSString *value = [[NSUserDefaults
standardUserDefaults] objectForKey:@"name"];
   
NSLog(@"%@", value);
}

2.复杂类型对象的存储

//归档,即将自己创建的model类对象转换为二进制格式,通过二进制格式进行存储
- (void)archiveObject{

    
   
Student *stu = [[Student
alloc]init];
    stu.name =
@"cat";
    stu.sex =
@"f";
    stu.age =
20;

    

    //NSArray *arr = [NSArray arrayWithObject:stu];

    

    NSData *data = [NSKeyedArchiver
archivedDataWithRootObject:stu];

    

    NSArray *path =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
   
NSString *str = [path
firstObject];

    str = [NSString
stringWithFormat:@"%@/model",str];

    [data writeToFile:str
atomically:YES];
}

//解档。将归档后的二进制文件解当为相对应的model类型对象
- (void)unarchiveObject{

    NSArray *path =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
   
NSString *str = [path
firstObject];
    str = [NSString
stringWithFormat:@"%@/model",str];

    

    NSData *data = [NSData
dataWithContentsOfFile:str];

    
   
Student *model = [NSKeyedUnarchiver
unarchiveObjectWithData:data];
   
NSLog(@"model == %@",model.name);
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios开发 应用 存储
相关文章推荐