demo
存儲文件到沙盒:
1.獲取沙盒路徑:
-(NSString*)documentPath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory=[paths objectAtIndex:0];
return documentsDirectory;
}
2.創建文件名,得到文件路徑
-(NSString*)getConfigFileName
{
NSString *docpath = [self documentPath];
docpath = [docpath stringByAppendingPathComponent:@"dev00001"];
return docpath;
}
3.把要存到document里的所有數據類型先轉換為字符串
-(NSString*)NSObjectToJsonString:(id)obj
{
NSString *jsonString = nil;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:obj
options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
error:&error];
if (! jsonData) {
NSLog(@"Got an error: %@", error);
} else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
return jsonString;
}
4.把得到的字符串存到剛才指定的路徑中
下面例子是把數組存到沙盒路徑中
-(void)save:(NSMutableArray*)ary
{
NSString *str = [self NSObjectToJsonString:ary];
NSString *fname = [self getConfigFileName];
BOOL res = [str writeToFile:fname atomically:YES encoding:NSUTF8StringEncoding error:nil];
if(res){
NSLog(@"存儲成功");
}
}
5.根據路徑取出存入的數據類型
(先從路徑中把字符串取出來,然后把字符串轉成data,最后把data解析成你剛才存入的數據類型,最后,你可以把想要得到的數據類型自由轉換)
下面例子是取出的數組類型數據
-(NSMutableArray*)getRootListButtons
{
NSString *fname = [self getConfigFileName];
NSString *str = [NSString stringWithContentsOfFile:fname encoding:NSUTF8StringEncoding error:nil];
if(str.length!=0){
NSData * data;//= read from fname data to data;
data = [str dataUsingEncoding: NSASCIIStringEncoding];
NSError *error;
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:0];
array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
if (array == nil)
{
NSLog(@"json parse failed. error = %@",error);
}
else
{
return array;
}
} else{
return nil;
}
return nil;
}