plist 输出值的问题
Posted
技术标签:
【中文标题】plist 输出值的问题【英文标题】:problems with the plist output values 【发布时间】:2011-08-24 04:45:46 【问题描述】:这是我第一次使用 plist 作为为我的应用程序存储少量数据的方式。我现在的问题是我的应用程序给出了EXC_BAD_ACCESS
错误。在我阅读 plist 的方法中,它给了我summary unavailable
。但是 NSMutableDictionary 给了我 2 个密钥/配对,我的 plist 只有 2 个值,只是为了学习如何使用 plist(现在)。我有一种感觉,由于这个 Summary Unavailable, I got the
EXC_BAD_ACCESS` 错误?
-(void)readFile
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //1
NSString *documentsDirectory = [paths objectAtIndex:0]; //2
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"EventAddress.plist"]; //3
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path]) //4
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"EventAddress" ofType:@"plist"]; // 5
[fileManager copyItemAtPath:bundle toPath: path error:&error]; //6
NSMutableDictionary *savedStock = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
//load from savedStock both addr and event are NSString
addr = [savedStock objectForKey:@"Address"];
event = [savedStock objectForKey:@"Event"];
[savedStock release];
任何帮助将不胜感激。
更新 1
Where the error occurred was at the - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
...
...
// EXC_BAD_ACCESS happened at this line
[[cell textLabel] setText:addr];
但是当@Jeff 告诉我保留地址和事件时,问题就解决了。现在我的新 EXC_BAD_ACCESS
来自 main.m 文件:
int retVal = UIApplicationMain(argc, argv, nil, nil);
现在可能出了什么问题?
更新 2 这是我学习如何使用 plist 的网站。 plist tutorial
【问题讨论】:
哪一行得到了 EXC_BAD_ACCESS? 对不起,没有正确写出问题。 addr 和 event 都假设显示在UITableViewCell
[[cell textLabel] setText:addr];
我会尝试@Jeff 的回复,然后更新这个问题。感谢您的快速回复!
【参考方案1】:
在此之后您是否使用addr
和event
的值?它们没有被保留,所以当savedStock
被释放时,它们也会被释放。如果这些是实例变量,请在将它们从字典中拉出时保留它们。
【讨论】:
以上是关于plist 输出值的问题的主要内容,如果未能解决你的问题,请参考以下文章
writeToFile 输出 .plist 没有写入正确的值
将 NSMutableDictionary 保存到 plist 问题中