存取數據文件(一)

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;
}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,419評論 0 6
  • 1.不可變數組轉變為可變數組聲明實例變量的數組 必須記得實現 對于遍歷數組找到對象后 如果還需要查找 記得先結束 ...
    小新xin閱讀 725評論 0 1
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,199評論 30 471
  • 三月桃花始芳菲 春風猶憐紅妝美 無謂花期傲寒立 半緣修道候君來
    瑕疵獸閱讀 273評論 0 0
  • GG趁著年假來看我,嗯,就是那個你一直叫不對名兒的,我的朋友。 車子晚點了,九點才接到她,吃得也不知道是晚飯還是夜...
    夏暖心閱讀 178評論 1 0