如何将一个键-值对添加到 plist 文件在Objective-C

发布时间: 2016/10/2 15:57:33
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在进行一个 iPhone 应用程序,我需要将新的键 / 值对添加到现有的 plist 文件使用 objective-c 。这是我到目前为止︰

NSString *myFile=[[NSBundle mainBundle] pathForResource:@"Favourites" ofType:@"plist"];

dict = [[NSMutableDictionary alloc] initWithContentsOfFile:myFile];
[dict setObject:textContent forKey:keyName];
[dict writeToFile:myFile atomically:YES];

然而,当我这样做时它不会向文件中写入它。我只看到基于改变键的值或添加另一个关键的资源。有另一种方式做到这一点吗?

谢谢您的宝贵时间

解决方法 1:

你不能在捆绑中进行任何更改。所以你要做的是复制 .plist 文件到您的文档目录和操作那里。

类似这些行︰

//check for plist
//Get documents directory's location
NSArray*docDir=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString*filePath=[docDir objectAtIndex:0];
NSString*plistPath=[filePath stringByAppendingPathComponent:@"Favourites.plist"];

//Check plist's existance using FileManager
NSError*err=nil;
NSFileManager*fManager=[NSFileManager defaultManager];

if(![fManager fileExistsAtPath:plistPath])
{
    //file doesn't exist, copy file from bundle to documents directory

    NSString*bundlePath=[[NSBundle mainBundle] pathForResource:@"Favourites" ofType:@"plist"];
    [fManager copyItemAtPath:bundlePath toPath:plistPath error:&err];
}

//Get the dictionary from the plist's path
NSMutableDictionary*plistDict=[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
 //Manipulate the dictionary
 [plistDict setObject:textContent forKey:keyName];
 //Again save in doc directory.
 [plistDict writeToFile:myFile atomically:YES];
赞助商