【发布时间】:2013-05-05 07:25:09
【问题描述】:
我正在尝试在我的 iOS 应用中保存一些数据。我使用以下代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"yourPlist.plist"];
//inserting data
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:categoryField.text forKey:@"Category"];
[dict setValue:nameField.text forKey:@"Name"];
[dict setValue:eventField.text forKey:@"Event"];
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObject:dict];
[arr writeToFile: path atomically:YES];
//retrieving data
NSMutableArray *savedStock = [[NSMutableArray alloc] initWithContentsOfFile: path];
for (NSDictionary *dict in savedStock) {
NSLog(@"my Note : %@",dict);
}
但是 NSLog 只向我显示了最后的数据...我想我正在覆盖这里..我不明白为什么!
如何在不覆盖的情况下继续将字典保存在数组中?有什么想法吗?
【问题讨论】:
-
我知道并且我正在强烈重新考虑将已接受的答案更改为您的答案。那段代码似乎更容易,这就是我选择它的原因。
-
我不是要你接受它,另一个很简单,因为它没有处理所有覆盖,易用性,存储封装等。我建议你尝试一下.您可以将 plist 保存为字典,它将模型对象转换为字典并在回调时执行相反的操作。
标签: ios objective-c cocoa-touch dictionary overwrite