将数组保存到文件系统中
问题
将数组中的对象保存到文件系统中以供其他程序使用。
解决方案
如果数组包含了数字或字符串对象的列表,那么可以将所有这些对象保存到文件系统中以供后续使用,使用writeToFile:atomically:方法可以做到这一点。注意,该方法无法处理自定义对象。自定义对象需要使用NSCoding 协议并使用归档类或Core Data(后面再举例)。
说明
该攻略需要创建如下由字符串与数字组成的数组:
NSArray *listOfObjects = [NSArray arrayWithObjects:@"A", @"B", @"C",
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:3],
nil];
要想将数组保存到文件系统中,首先需要如下文件引用:NSString *filePathName = @"/Users/Shared/array.txt";
现在可以使用writeToFile:atomically:方法将数组内容写到Mac 文件系统中:
[listOfObjects writeToFile:filePathName
atomically:YES];
代码
程序清单main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"A", @"B", @"C",
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:3],
nil];
NSString *filePathName = @"/Users/Shared/array.txt";
[listOfObjects writeToFile:filePathName
atomically:YES];
}
return 0;
}
使用
要想使用上述代码,请从Xcode 构建并运行Mac 应用。使用Finder 找到创建的文件,位于/Users/Shared/array.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">
<array>
<string>A</string>
<string>B</string>
<string>C</string>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
</plist>
数据以XML 格式组织为属性列表(一种存储键数据的Objective-C 格式)。