关闭

IOS学习笔记---文件加载和保存

标签: IOS
443人阅读 评论(0) 收藏 举报
分类:

以下是将属性列表文件plist数据内容以二进制形式写入文件的代码:

void writeCapitols (void)

{

    NSMutableArray *capitols = [NSMutableArrayarrayWithCapacity:10];

    NSMutableDictionary *capitol = [NSMutableDictionarydictionaryWithObject:@"Canada"forKey:@"country"];

    [capitol setObject:@"Ottawa"forKey:@"capitol"];

    [capitols addObject:capitol];

    capitol = [NSMutableDictionarydictionaryWithObject:@"Norway"forKey:@"country"];

    [capitol setObject:@"Oslo"forKey:@"capitol"];

    [capitols addObject:capitol];

    

    NSString *error =nil;

    NSData *encodedArray = [NSPropertyListSerializationdataFromPropertyList:capitols 

                                                                     format:NSPropertyListBinaryFormat_v1_0 

                                                           errorDescription:&error];

    [encodedArray writeToFile:@"/tmp/capitols.txt"atomically:YES];

}

如你所见,我们将数组数据转换成了NSData类型并写入了文件中。

将数据读取回内存要多执行一步,即指定文件的类型。我们创建了一个指针,如果文件格式与指定的类型不同,可以换用原格式类型的指针,也可以将读取的内容转换成新的格式。

static void modifyCapitols(void)

{

    NSData *data = [NSDatadataWithContentsOfFile:@"/tmp/capitols.txt"];

    NSPropertyListFormat propertyListFormat =NSPropertyListXMLFormat_v1_0;

    NSString *error =nil;

    NSMutableArray *capitols = [NSPropertyListSerializationpropertyListFromData:data

                                                               mutabilityOption:NSPropertyListMutableContainersAndLeaves

                                                                         format:&propertyListFormat

                                                               errorDescription:&error];

    NSLog(@"capitols %@", capitols);

}

在main函数中,我们调用writeCapitols();modifyCapitols();的输出结果如下:

capitols (

        {

        capitol = Ottawa;

        country = Canada;

    },

        {

        capitol = Oslo;

        country = Norway;

    }

)


可以使用[NSDate date]来获取当前的日期和时间,它会返回一个能自动释放的对象。

    NSDate *date = [NSDatedate];

   NSLog (@"today is %@", date);

将输出的结果为:today is 2013-12-4 19:58:06 -0400。


有些属性列表文件,特别是首选项文件,是以压缩的二进制格式存储的。通过使用plutil命令:plutil - convert xml1文件名.plist,可以将这些文件转换成人可以理解的字面形式。

Cocoa具备一种将对象转换成某种格式并保存到磁盘中的机制。对象可以将它们的实例变量和其他数据编码为数据块,然后保存到磁盘中。这些数据块以后还可以读回内存中,并且还能基于保存的数据创建新对象。这个过程被称为编码与解码(encoding and decoding),也可以叫做序列化与反序列化(serialization and deserialization)

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:126768次
    • 积分:2691
    • 等级:
    • 排名:第13399名
    • 原创:146篇
    • 转载:36篇
    • 译文:0篇
    • 评论:5条
    最新评论