应用程序关闭时,plist数据未更新并保存

时间:2014-07-30 14:13:44

标签: ios objective-c plist

我有一个带有一些值的“设置”plist文件。我正在尝试读取plist,然后对其中一个设置进行更新。当我重新加载我的应用程序时,更新尚未生效,原始设置仍然存在。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Settings.plist"];

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSString *errorDesc = nil;
NSPropertyListFormat format;
NSMutableDictionary *settings = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
if (!settings) NSLog(@"error reading plist: %@ , format: %lu", errorDesc, format);

//更新对象

[settings setObject:@"0" forKey:@"£50"];
[settings writeToFile:@"Settings.plist" atomically:YES];

2 个答案:

答案 0 :(得分:0)

这个错误似乎就在这里。

[settings writeToFile:@"Settings.plist" atomically:YES];

这是plist的错误路径。如果我将其更改为

[settings writeToFile:plistPath atomically:YES];

一切正常

答案 1 :(得分:0)

如果这个plist执行它所暗示的内容(存储设置),那么NSUserDefaults就是为此而不必处理文件系统。