如何将 NSMutableDictionary 写入 Plist

Posted

技术标签:

【中文标题】如何将 NSMutableDictionary 写入 Plist【英文标题】:how to write NSMutableDictionary into Plist 【发布时间】:2010-10-21 06:07:56 【问题描述】:

任何人都可以帮助我解决如何将 NSMutableDictionary 写入 plist....

提前谢谢..

【问题讨论】:

【参考方案1】:

确保您正在写入的 pList 文件位于可以编辑它的合法位置,例如应用程序沙箱中的文档。 然后找到该位置的路径(如果有现有的 pList 文件,它将覆盖),并使用:

[myDictionary writeToFile:path atomically:YES];

写下你在这个过程中走了多远,也许还有一些代码/错误消息...

【讨论】:

这是我的代码:NSMutableDictionary *nameDetails=[[NSMutableDictionary alloc] init]; [nameDetails setValue:username forKey:USERNAME_KEY]; [nameDetails setValue:password forKey:PASSWORD_KEY]; NSString *loginDetails = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; [nameDetails writeToFile:loginDetails atomically:YES]; savedStock = [NSMutableDictionary dictionaryWithContentsOfFile:loginDetails];【参考方案2】:
[yourDict writeToFile:filePath atomically:YES];

请注意,字典必须包含 plist 对象(NSDataNSDateNSNumberNSStringNSArrayNSDictionary 的实例)。并且字典键必须是NSString 对象

【讨论】:

这是我的代码 [nameDetails writeToFile:loginDetails atomically:YES]; 什么是 loginDetails 路径?您确定您的字典符合其内容类型的条件吗?【参考方案3】:

问题是您的应用程序正在尝试将 plist 写入其自己的包中。您的 plist 应存储在用户库中。但是,如果您要存储用户的服务凭据,那么您真的应该使用 Mac OS X 钥匙串服务来存储该信息。

【讨论】:

【参考方案4】:
NSMutableDictionary *nameDetails=[[NSMutableDictionary alloc] init]; 
[nameDetails setValue:username forKey:USERNAME_KEY]; 
[nameDetails setValue:password forKey:PASSWORD_KEY]; 

NSString *loginDetails = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; 
[nameDetails writeToFile:loginDetails atomically:YES];

savedStock = [NSMutableDictionary dictionaryWithContentsOfFile:loginDetails];

【讨论】:

【参考方案5】:
NSString *pathToPlist = [[NSBundle mainBundle] bundlePath];
pathToPlist = [pathToPlist stringByDeletingLastPathComponent];
pathToPlist = [pathToPlist stringByAppendingPathComponent:@"Documents"];
NSLog(@"%@", pathToPlist; //*
pathToPlist = [pathToPlist stringByAppendingPathComponent:@"Login.plist"];
NSDictionary *nameDetails = @@"name": @"Albert", @"password": @"emc2";
[nameDetails writeToFile:pathToPlist atomically:YES];
我们正在记录控制台的路径,以便能够在 Finder 中找到它。将路径从控制台复制到剪贴板。然后在 Finder 的 Go 菜单中选择“Go To Folder...”。将路径粘贴到对话框中,将打开 plist 所在的文件夹。然后您可以检查它并确保一切正常。

【讨论】:

以上是关于如何将 NSMutableDictionary 写入 Plist的主要内容,如果未能解决你的问题,请参考以下文章

如何将字段添加到 NSMutableDictionary Swift [重复]

如何将 NSMutableDictionary setObject 值分配为 indexPath.section 值?

如何使用键将对象添加到 NSMutableDictionary?

如何在 NSMutableDictionary 中保留部分分数

单例、NSMutableDictionary 和 plist

如何创建一个包含许多 NSMutableArrays 的 NSMutableDictionary