2

我有一个 Settings.plist,我想编辑这个文件中的一些值。

我的编辑/写作功能是:

- (void) setParamWithName: (NSString*) Name withValue: (NSString*) Value {

// get paths from root direcory
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Settings.plist"];

// check to see if Data.plist exists in documents
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath])
{
    // if not in documents, get property list from main bundle
    plistPath = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"plist"];
}

// read property list into memory as an NSData object
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSString *errorDesc = nil;
NSPropertyListFormat format;
// convert static property list into dictionary object
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
if (!temp)
{
    NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
}

// checking if element exists, if yes overwriting

// if element not exists adding new element


[temp writeToFile:plistPath atomically:YES];

}

此函数读取和写入(使用相同的值)Settings.plist。

我不知道如何添加新元素或编辑现有元素(我对 Objective-c 的了解还不够)。谁能帮我解决这个问题?

4

1 回答 1

1

我认为这比你想象的更容易。

获得文件路径后,将其读入 NSDictionary。使用 mutableCopy 和 NSMutableDictionary 制作该字典的可变副本。现在根据需要编辑该可变字典(添加 s.th.、删除 s.th.、编辑 s.th. 等等)。

现在你已经完成了,你可以像使用 temp 一样将它写回旧路径。

您的主要问题是您没有使用该词典的可变版本。它会让你的生活更轻松。

于 2013-09-03T17:00:25.150 回答