在UITableView中显示plist文件

时间:2011-02-16 00:51:47

标签: iphone xcode plist

所以,我的应用程序包含一个视图控制器中的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;

我的问题是,如何制作它以便我可以保存多个文件并在表格视图中显示多个文件。现在,只能保存一个文件,每次按下保存按钮时都会被覆盖。

提前致谢,

泰特

1 个答案:

答案 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或类似的东西?