如何将 tableview 行保存到文件并重新加载到 tableview

Posted

技术标签:

【中文标题】如何将 tableview 行保存到文件并重新加载到 tableview【英文标题】:How to save tableview rows to a file and reload to tableview 【发布时间】:2015-06-25 00:33:29 【问题描述】:

我有一个简单的表格视图,并用 text.field 填充它:

@interface ListaDeProdutosTableViewController ()

@property NSMutableArray *produtos;

@end

@implementation ListaDeProdutosTableViewController

现在我想将这些行保存到文件中(以保存数据)并将其读回 tableview。我该怎么做?

你能帮帮我吗?谢谢!

【问题讨论】:

你的问题不清楚。我想将这些行保存到文件中是什么意思?是否要保存表格视图单元格的内容? 我的表格视图由 1 个动态原型单元组成。用户将产品一一输入到表格视图中。我想要的是将该列表保存到持久数据的文件中。当用户可以将保存的列表检索到 tableview 时,编辑此列表并再次保存。我的困难是使用 self.produtos 访问这个数组的内容,为什么我不能访问它的内容?当我尝试引用 self.produtos [0] (它是一个数组,对吗?还是不同类型的数组?)我有异常错误,内容似乎是内存地址 0x7506603.. 是的,Bhanu,我想保存我的 tableview 的内容。 【参考方案1】:

不确定您要保存什么,但这里有一个如何将对象保存到文件并稍后读取的示例:

- (NSString *)cachePath 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    return [paths objectAtIndex:0];


- (void)cacheObject:(NSString *)objectId withData:(SomeClass *)objectData
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:objectData];
    NSString *path = [NSString stringWithFormat:@"%@/someobject-%@.cache", [self cachePath], objectId];
    [data writeToFile:path atomically:YES];


- (SomeClass *)getObjectCache:(NSString *)objectId 
    NSString *path = [NSString stringWithFormat:@"%@/someobject-%@.cache", [self cachePath], objectId];
    NSData *data = [NSData dataWithContentsOfFile:path];
    if (!data) 
        return nil;
    
    SomeClass *object = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    return object;

【讨论】:

以上是关于如何将 tableview 行保存到文件并重新加载到 tableview的主要内容,如果未能解决你的问题,请参考以下文章

如何持久化 tableview 行?

如何在JavaFX中保存/加载TableView中的数据

TableView:是不是可以在不重新加载 tableview 或部分的情况下删除现有行并插入新行?

在uitableview中插入行并重新加载

如何将一个数组的tableview数据重新加载到另一个数组?

使用tableView:moveRowAtIndexPath:toIndexPath:方法后,将新订单保存到核心数据