【发布时间】:2012-09-04 16:39:51
【问题描述】:
读入确实加载:
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path]) //4
{
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; //5
[fileManager copyItemAtPath:bundle toPath: path error:&error]; //6
}
//load in text fields.
NSMutableDictionary *savedData = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
nameField.text = [[savedData objectForKey:@"name"] stringValue];
locationTextField.text = [[savedData objectForKey:@"location"] stringValue];
sectorTextField.text = [[savedData objectForKey:@"sector"] stringValue];
在按钮点击时写入:
- (IBAction)writingButton:(id)sender
{
NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
//[data setObject:[NSNumber numberWithInt:value] forKey:@"value"];
[data setObject:[NSString stringWithString:nameField.text] forKey:@"name"];
[data setObject:[NSString stringWithString:locationTextField.text] forKey:@"location"];
[data setObject:[NSString stringWithString:sectorTextField.text] forKey:@"sector"];
}
plist 文件:
错误:
2012-09-04 17:03:40.360 应用程序[4849:c07] -[__NSCFString stringValue]: 无法识别的选择器发送到实例 0x6aa38f0 2012-09-04 17:03:40.362 应用程序 [4849:c07] *** 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[__NSCFString stringValue]: 无法识别的选择器发送到实例 0x6aa38f0'
有什么想法吗?干杯。
【问题讨论】:
-
另外,请阅读错误信息。它是简单易懂的英语。
-
我不知道 id 我需要一个不同的选择器(我已经在 cocos2d 之外使用 ios 应用程序大约一个半月了,所以我还在学习)
-
plist 中的值已经是 String 类型,那你为什么要使用 [[savedData objectForKey:@"name"]stringValue] 对它们进行类型转换。只需使用 [[savedData objectForKey:@"name"] 等等。
-
@dev6546 我明白了 :) 但是,在 NSDictionary 的文档中,它仍然清楚地说明了它是如何工作的。
标签: objective-c ios plist read-write