从文件系统读取字典文件活和字典文件保存到文件

来源:互联网 发布:邮票淘宝 编辑:程序博客网 时间:2024/05/29 08:10

从文件系统读取字典文件活字典文件保存到文件

(1)将字典保存到文件系统中

问题
       你想将字典中的对象保存到文件系统中以供日后或是其他程序使用。
解决方案
       如果字典中包含数字或字符串对象的列表,那么可以将所有这些对象保存到文件系统中以供后续使用,使用writeToFile:atomically:方法可以做到这一点。注意,该方法无法处理自定义对象。

说明
      该攻略需要创建如下字典,其中的内容是与键匹配的短语:

NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",                         @"Bonjour tout le monde", @"Hola Mundo", nil];NSArray *listOfKeys = [NSArray arrayWithObjects:@"english", @"french",                      @"spanish", nil];NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:listOfObjects                           forKeys:listOfKeys];
      要想将字典保存到文件系统中,首先需要获得如下文件引用:
NSString *filePathName = @"/Users/Shared/dictionary.txt";

       现在可以使用writeToFile:atomically:方法将字典内容写到Mac 文件系统中:

[dictionary writeToFile:filePathName             atomically:YES];
       参见程序清单1-1。

代码
       程序清单1-1 main.m

#import <Foundation/Foundation.h>int main (int argc, const char * argv[]){    @autoreleasepool {       NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",                                @"Bonjour tout le monde", @"Hola Mundo", nil];       NSArray *listOfKeys = [NSArray arrayWithObjects:@"english",                             @"french", @"spanish", nil];       NSDictionary *dictionary = [NSDictionary       dictionaryWithObjects:listOfObjects forKeys:listOfKeys];       NSString *filePathName = @"/Users/Shared/dictionary.txt";       [dictionary writeToFile:filePathName       atomically:YES];    }    return 0;}

使用
      要想使用上述代码,请从Xcode 构建并运行Mac 应用。使用Finder 找到创建的文件,位于/Users/Shared/dictionary.txt。下面列出文本文件的内容:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>    <key>english</key>    <string>Hello World</string>    <key>french</key>    <string>Bonjour tout le monde</string>    <key>spanish</key>    <string>Hola Mundo</string></dict></plist>
       数据以XML 格式组织为属性列表(一种存储键数据的Objective-C 格式)。

(2)从文件系统读取字典

问题
       有一些应用可以访问到的文件,其中包含了以字典形式组织的内容,你想在应用中使用这些内容。
解决方案
       如果有了通过字典创建的文件(使用writeToFile:atomically:方法保存),那么可以使用initWithContentsOfFile:构造函数实例化新的字典,新字典是由文件内容构成的。
说明
      本攻略使用1-1 节中的文件(已将字典的内容保存到文件系统中)。因此,这里会使用相同的文件路径名:

NSString *filePathName = @"/Users/Shared/dictionary.txt";

      接下来就可以使用initWithContentsOfFile:构造函数创建由文件内容构成的新字典:

NSDictionary *dictionary = [[NSDictionary alloc]                           initWithContentsOfFile:filePathName];
参见程序清单1-2。
代码
      程序清单1-2 main.m
#import <Foundation/Foundation.h>int main (int argc, const char * argv[]){    @autoreleasepool {       NSString *filePathName = @"/Users/Shared/dictionary.txt";       NSDictionary *dictionary = [[NSDictionary alloc]       initWithContentsOfFile:filePathName];       NSLog(@"dictionary: %@", dictionary);    }    return 0;}
使用
      要想使用上述代码,请从Xcode 构建并运行Mac 应用。可通过日志查看字典的内容:
dictionary: {    english = "Hello World";    french = "Bonjour tout le monde";    spanish = "Hola Mundo";}

阅读全文
0 0
原创粉丝点击