写/读 plist 文件 iPhone

Posted

技术标签:

【中文标题】写/读 plist 文件 iPhone【英文标题】:Write/Read plist file iPhone 【发布时间】:2010-10-17 16:01:06 【问题描述】:

我的 iphone 应用程序中有 plist,我想从我的单向读取和写入一个整数并形成它。

我有这个要读:

 scoreData *score = [scoreData sharedData];

 filePath = @"stats.plist";
 NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

 score.highScore = [plistDict objectForKey:@"score"];

然后写给它:

scoreData *score = [scoreData sharedData];

 NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];

 [plistDict setValue:score.highScore forKey:@"score"];
 [plistDict writeToFile:filePath atomically: YES];

我在这两个部分都遇到了错误:

objc_object* 到 int 的无效转换

int 到 objc_object 的转换格式无效

感谢任何帮助,谢谢。

【问题讨论】:

【参考方案1】:

两件事:

    当您在字典中设置键时,you're probably after setObject:forKey: 而不是 setValue:forKey:

    字典包含对象(类型 idNSString* 或您自己的 Obj-C 对象),而不是原始类型(int、BOOL 等)。

当您想在 Obj-C 集合中存储原始类型时,可以将其“包装”在一个对象中,如下所示:

[plistDict setObject:[NSNumber numberWithInt:score.highScore] forKey:@"score"];

然后像这样拿回来:

score.highScore = [[pListDict objectForKey:@"score"] intValue];

【讨论】:

构建没有错误 nw 这太棒了!但是我更改了 score.highScore,然后完全退出应用程序,重新启动并将其归零,它永远不会恢复价值。感谢您的帮助,谢谢。 有趣的发现。我认为我正在使用它写入 plist 并读取它的代码,但实际上并没有保存它以备下次使用该应用程序时使用。可能的?我该如何解决这个问题? 可能它不起作用,因为您正在尝试将字典写入 App 包中的 .plist 文件,该文件是只读的。您应该检查“[plistDict writeToFile:filePath atomically: YES];”的返回值(是=成功,否=写入失败)。尝试将文件写入 App Bundle 文档文件夹中的路径,该路径是可读写的。您可以使用以下方法获取文档的路径: NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *docDir = [arrayPaths objectAtIndex:0];【参考方案2】:

看看这是否回答了你的问题:

How to create a new custom property list in iPhone Applications

您可以使用 NSUserDefaults 但当然 highScore 并不是真正的默认值。

【讨论】:

以上是关于写/读 plist 文件 iPhone的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xcode 4.3.2 中创建 plist 文件

在 PhoneGap 项目中找不到 plist

IOS:检查 plist 文件

什么是Plist文件

写入 plist 的问题

如何等待 plist 写操作完成?