ios - 写入plist文件而不写入

标签 ios int plist nsdictionary

我想从plist文件中检索一个整数,对其进行递增,然后将其写回到plist文件中。在“Levels.plist”文件中,一行包含关键字LevelNumber,值1
我使用以下代码来检索值:

NSString *filePath = [[NSBundle mainBundle]pathForResource:@"Levels.plist" ofType:@"plist"];;
    NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
    lvl = [[plistDict objectForKey:@"LevelNumber"]intValue];
    NSLog(@"%i", [[plistDict objectForKey:@"LevelNumber"]intValue]);

运行此命令时,控制台输出为0。有人可以告诉我我做错了吗?

最佳答案

NSString *filePath = [[NSBundle mainBundle] 
          pathForResource:@"Levels.plist" ofType:@"plist"];

NSMutableDictionary* plistDict = [[NSMutableDictionary alloc]
                          initWithContentsOfFile:filePath];
lvl = [[plistDict objectForKey:@"LevelNumber"]intValue];
NSLog(@"%i", [[plistDict objectForKey:@"LevelNumber"]intValue]);

我的猜测是,除非您实际上已将文件命名为“Levels.plist.plist”,否则NSBundle会为pathForResource:ofType:调用返回nil。

请记住,如果该方法恰巧返回nil,则其余代码仍可以继续。给定nil文件路径,NSMutableDictionary将返回nil,随后将对象从字典中移出的调用也将返回nil,因此您的日志记录调用显示输出为0。

关于ios - 写入plist文件而不写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11553226/

相关文章:

ios - 警报 View 中的两个文本字段,它们之间有空格

ios - 设置子 Pane 的值

python - 当存在 NaN 时, Pandas 将 INT 转换为 Float 是否有任何解决方法?

encoding - 如何在 elixir 中将二进制转换为 base10(十进制)整数

ios - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : -[__NSCFString scheme]: unrecognized selector sent to instance

ios - 如何从 ViewDidLoad 中的警报 View 获取文本字段值? iOS 5 代码

swift - 如何编写 NSOutlineView?

objective-c - 将数据保存到 xcode 中的 plist

c# - 三元运算符行为不一致

iphone - 在应用商店应用程序中破解 plist 文件有多容易?