将字符串添加到 plist 文件时遇到问题
Posted
技术标签:
【中文标题】将字符串添加到 plist 文件时遇到问题【英文标题】:Having issue with adding the string a plist file 【发布时间】:2016-05-04 10:40:46 【问题描述】:我的应用程序中有一个 plist 文件,表格视图会加载它的对象。当用户在textfield
中输入文本并点击保存按钮时,我需要保存一个字符串,这是我的代码,日志显示了正确的字符串,但表格没有重新加载,plist 没有添加任何内容!
NSString *rootPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath=[rootPath stringByAppendingPathComponent:@"users.plist"];
NSMutableDictionary *plist_dict=[[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
if(plist_dict==nil)
plist_dict =[[NSMutableDictionary alloc]init];
[plist_dict setObject:_username.text forKey:@"username"];
[plist_dict writeToFile:plistPath atomically:YES];
[_tableView reloadData];
这是我的默认 plist 文件:
<plist version="1.0">
<dict>
<key>username</key>
<array>
<string>Instagram</string>
</array>
</dict>
</plist>
【问题讨论】:
检查并报告来自[NSArray writeToFile:atomically:]
的返回值,看看是否是问题所在。
@***foe 你会检查我编辑的 Q 吗?
我觉得之前的代码没问题;将 plist 写为数组是可以的。但是,您必须做的是检查 writeToFile:
返回的内容,并在发生故障时写入日志条目,以缩小错误的来源。
@***foe 当我登录 plist_dict
时,它给了我正确的结果:例如 username = xxx;
但它不会刷新 tableview 并添加到 plist 文件,顺便说一下我如何检查和报告[NSArray writeToFile:atomically:]
?
使用if
语句和对NSLog()
的调用。
【参考方案1】:
NSString *rootPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath=[rootPath stringByAppendingPathComponent:@"appSetting.plist"];
NSMutableDictionary *plist_dict=[[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
if(plist_dict==nil)
plist_dict =[[NSMutableDictionary alloc]init];
[plist_dict setObject:[NSNumber numberWithBool:status] forKey:@"isLoggedIn"];
[plist_dict writeToFile:plistPath atomically:YES];
使用此代码。它为我工作。希望对你有帮助。
【讨论】:
仍然没有添加任何东西!我的 plist 中没有任何key
你应该使用 key 否则将如何访问该值
我只是添加了密钥,但仍然不起作用!检查我编辑的问题以上是关于将字符串添加到 plist 文件时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
我在统一使用firebase时遇到问题,无法找到google-services.json或GoogleService-info.plist文件