写/读 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:
。
字典包含对象(类型 id
或 NSString*
或您自己的 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的主要内容,如果未能解决你的问题,请参考以下文章