如何在iphone中以编程方式创建PLIST文件

时间:2011-07-14 17:09:46

标签: iphone objective-c ios cocoa-touch plist

我想在目标C中以编程方式在我的应用程序Documents文件夹中创建plist文件。我在文档目录中创建了一个文件夹:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@/Data.plist", documentsDirectoryPath];

我正在尝试创建一个看起来像XML文件的plist文件。 / ****必需的XML文件**** /

<?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>
<dict>
    <key>height</key>
    <integer>4007</integer>
    <key>name</key>
    <string>map</string>
    <key>width</key>
    <integer>6008</integer>
</dict>
</array>
</plist>

/ ****通过代码**** /

实现了文件
<?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>height</key>
    <string>4007</string>
    <key>name</key>
    <string>map</string>
    <key>width</key>
    <string>6008</string>
</dict>
</plist>

所需文件需要一个数组,在数组中我们有一个字典对象。我怎么能改变这个? 我也知道如何将文件写入路径,但主要问题是如何创建plist文件然后读取它?

3 个答案:

答案 0 :(得分:66)

PLIST文件,也称为“属性列表”文件,使用XML格式存储数组,字典和字符串等对象。

您可以使用此代码创建,添加值并从plist文件中检索值。

//Get the documents directory path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"plist.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path]) {

    path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat:@"plist.plist"] ];
}

NSMutableDictionary *data;

if ([fileManager fileExistsAtPath: path]) {

    data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
}
else {
    // If the file doesn’t exist, create an empty dictionary
    data = [[NSMutableDictionary alloc] init];
}

//To insert the data into the plist
[data setObject:@"iPhone 6 Plus" forKey:@"value"];
[data writeToFile:path atomically:YES];

//To retrieve the data from the plist
NSMutableDictionary *savedValue = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
NSString *value = [savedValue objectForKey:@"value"];
NSLog(@"%@",value);

答案 1 :(得分:4)

我认为,如果您查看那里的示例,这篇文章save to .plist properity list会对您有帮助。

另外,请查看Apple的Creating Property Lists Programmatically文档,了解其他指南和示例。

答案 2 :(得分:3)

请注意,如果您只想要一个plist文件来保存数据,则无需创建和保存任何数据。有一种称为NSUserDefaults的机制。你做了像

这样的事情
[[NSUserDefaults standardUserDefaults] setInteger:1234 forKey:@"foo"];

,你在

中读到
NSInteger foo=[[NSUserDefaults standardUserDefaults] integerForKey:@"foo"];
// now foo is 1234

准备要保存的文件,将其写入文件,在下次启动应用时再次阅读,会自动为您完成!

阅读official referenceofficial document