SkewRain的专栏

每一个伟大的传奇都开始于一场冒险

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

以下是将属性列表文件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)

阅读更多
文章标签: IOS
个人分类: IOS学习笔记
上一篇IOS学习笔记-协议和代码块
下一篇IOS学习笔记---collections
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭