zoukankan      html  css  js  c++  java
  • 保存数据的一系列方法( 转)

    /*=======================================================
    NSKeyedArchiver
    ========================================================*/
    NSString *str = @"abc";
    NSString *astr = @"efg";
    NSArray *Array = [NSArray arrayWithObjects:str, astr, nil];
        
    //Save
    NSString *Path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; NSString *filename = [Path stringByAppendingPathComponent:@"test"];
    [NSKeyedArchiver archiveRootObject:Array toFile:filename];
        
    str = @"a";
    astr = @"";
        
    //load
    NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithFile: filename];
    str = [arr objectAtIndex:0];
    astr =  [arr objectAtIndex:1];
        
    NSLog(@"str:%@",str);
    NSLog(@"astr:%@",astr);
        
        

    /*=======================================================
    NSUserDefaults
    ========================================================*/
    NSString *str = @"abc";
    NSString *astr = @"efg";
    NSArray *Array = [NSArray arrayWithObjects:str, astr, nil];
        
    //Save
    NSUserDefaults *SaveDefaults = [NSUserDefaults standardUserDefaults];
    [SaveDefaults setObject:Array forKey:@"SaveKey"];
        
    str = @"a";
    astr = @"";
        
    //load
    Array = [SaveDefaults objectForKey:@"SaveKey"];
    str = [Array objectAtIndex:0];
    astr = [Array objectAtIndex:1];
    NSLog(@"str:%@",str);
    NSLog(@"astr:%@",astr);
        
        


    /*=======================================================
    writeToFile:
    ========================================================*/
    NSString *str = @"abc";
    NSString *astr = @"efg";
    NSArray *Array = [NSArray arrayWithObjects:str, astr, nil];
        
    //Save
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
    }
    NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"Savedatas.plist"];
    [[NSArray arrayWithObjects:Array,nil] writeToFile:appFile atomically:NO];    
        
        
    //load
    if([[NSFileManager defaultManager] fileExistsAtPath:appFile])
        self.SaveDataArray = [NSMutableArray arrayWithContentsOfFile:appFile];        
    else
        self.SaveDataArray = [NSMutableArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Savedatas" ofType:@"plist"]];
    NSArray *strArray = [self.SaveDataArray objectAtIndex:0];
        
    str = [strArray objectAtIndex:0];
    astr = [strArray objectAtIndex:1];





    //坛子里的,搬过来。。。。。
    -(BOOL) writeApplicationData:(NSDictionary *)data  writeFileName:(NSString *)fileName
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        if (!documentsDirectory) {
            NSLog(@"Documents directory not found!");
            return NO;
        }
        NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
        return ([data writeToFile:appFile atomically:YES]);
    }

    -(id) readApplicationData:(NSString *)fileName
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *appFile = [documentsDirectory stringByAppendingPathComponent:fileName];
        NSDictionary *myData = [[[NSDictionary alloc] initWithContentsOfFile:appFile] autorelease];
        return myData;
    }

    [/lang]





    之前说过的,还有一种保存数据的方法,没有发上来,

    现在更新给大家。


    用一个简单的例子来说明吧。



    //
    //  SaveDataInf.m
    //  SaveDataUseChar
    //
    //  Created by Lixf on 10-4-26.
    //  Copyright 2010 Lixf. All rights reserved.
    //

    #import "SaveDataInf.h"


    @implementation SaveDataInf
    @synthesize SaveData;
    @synthesize FontSize, Color, Aligment;

    -(id)initDataFromPath{
        NSString *Path = [[[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] stringByAppendingFormat:@"/Documents/"];
        NSString *LastPath = [Path stringByAppendingFormat:@"Data.inf"];
        if(SaveData != nil)
        {
            [SaveData release];
            SaveData = nil;
        }
        SaveData = [[NSMutableData alloc] initWithContentsOfFile:LastPath];
        unsigned char DataBuffer[10];
        if(SaveData == nil)
        {
            SaveData = [[NSMutableData alloc] initWithLength:1000];
            memset(DataBuffer, 0x0, sizeof(DataBuffer));
            FontSize = 18;
            Color = 0;
            Aligment = 0;
            DataBuffer[0] = FontSize;
            DataBuffer[1] = Color;
            DataBuffer[2] = Aligment;
            [SaveData replaceBytesInRange:NSMakeRange(0, 10) withBytes:DataBuffer];
        }else {
            [SaveData getBytes:DataBuffer range:NSMakeRange(0, 10)];
            FontSize = DataBuffer[0];
            Color = DataBuffer[1];
            Aligment = DataBuffer[2];
        }
        return self;
    }

    -(BOOL)writeDataToPath{
        NSString *Path = [[[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] stringByAppendingFormat:@"/Documents/"];
        NSString *LastPath = [Path stringByAppendingFormat:@"Data.inf"];
        BOOL isSuccess = [SaveData writeToFile:LastPath atomically:YES];
        if(isSuccess == YES)
        {
            return YES;
        }else {
            return NO;
        }

    }

    -(void)setFontSize:(char)size{
        unsigned char DataBuffer[10];
        FontSize = size;
        DataBuffer[0] = size;
        [SaveData replaceBytesInRange:NSMakeRange(0, 1) withBytes:DataBuffer];
    }

    -(void)setFontColor:(char)color{
        unsigned char DataBuffer[10];
        Color = color;
        DataBuffer[0] = color;
        [SaveData replaceBytesInRange:NSMakeRange(1, 1) withBytes:DataBuffer];
    }

    -(void)setFontAligment:(char)aligment{
        unsigned char DataBuffer[10];
        Aligment = aligment;
        DataBuffer[0] = aligment;
        [SaveData replaceBytesInRange:NSMakeRange(2, 1) withBytes:DataBuffer];
    }

    - (void)dealloc {
       if(SaveData != nil)
       {
           [SaveData release];
           SaveData = nil;
       }
        [super dealloc];
    }
    @end

    注:忙里偷闲。。。我只写了使用的方法。。一些细微细节大家使用的时候要注意。。。
    [ 此帖被angellixf在2010-05-19 08:55重新编辑 ]
    附件: SaveDataUseChar.zip (24 K) 下载次数:220
    源链接:http://www.cocoachina.com/bbs/read.php?tid-9414.html
  • 相关阅读:
    linux 查看父进程号
    gitlab
    诺基亚C6常识详解
    C#.net书籍列表
    表链接
    Limu:JavaScript的那些书(转载)
    Oracle 多行记录合并/连接/聚合字符串的几种方法
    关于有锁iPhone的常识(转载)
    not in与not exists性能比较
    多表连接查询
  • 原文地址:https://www.cnblogs.com/likwo/p/1824772.html
Copyright © 2011-2022 走看看