所以,我的应用程序包含一个视图控制器中的textview。当用户点击保存按钮时,该文本视图中的文本将使用以下代码写入plist:
- (IBAction)saveDoc:(id)sender
{ NSString * typedText = typingArea.text; NSMutableArray * totalFiles = [[NSMutableArray alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"savedFiles.plist"];
[totalFiles addObject:typedText];
[totalFiles writeToFile:path atomically:YES];
[totalFiles release];
}
然后,在一个完全独立的视图控制器中,我有一个UITableView,它使用这段代码显示保存的文件。:
- (void)viewDidLoad {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectories = [paths objectAtIndex:0];
NSString *path = [documentsDirectories stringByAppendingPathComponent:@"savedFiles.plist"];
NSLog(@"Got Path: %@", documentsDirectories);
array = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSLog(@"Loaded Array into new array: %@", array);
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
//self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
数组是一个NSMutableArray。然后我将它加载到表视图中,如下所示:
// Configure the cell...
NSString *cellValue = [array objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
我的问题是,如何制作它以便我可以保存多个文件并在表格视图中显示多个文件。现在,只能保存一个文件,每次按下保存按钮时都会被覆盖。
提前致谢,
泰特
答案 0 :(得分:2)
我的策略通常是创建一个NSDictionary,并使用密钥作为文件的名称保存文件,并将对象保存为数组。然而,在你做这个之前我认为你需要检查当前位置是否有内在的东西。
要做到这一点:
NSDictionary currentData = [NSDictionary dictionaryWithContentsOfFile:path];
[currentData setValue:totalFiles forKey:@"firstArray"];
[currentData writeToFile:path atomically:YES];
你当然可以即兴创作。查看NSDictionary的文档,它是一个非常有用的数据类型IMO(但可能变得非常复杂)。
否则你为什么不再拥有另一个plist文件?即使用savedFile.plist和savedFile2.plist或类似的东西?