需要将表格视图的内容保存为 txt 文件并稍后重新加载
Posted
技术标签:
【中文标题】需要将表格视图的内容保存为 txt 文件并稍后重新加载【英文标题】:need to save contents of table view as txt file and the reload it later 【发布时间】:2012-04-09 17:18:49 【问题描述】:我需要能够将 NSMutableArray 给定数据的表格视图的内容保存到 txt 文件中,然后需要在包含表格视图的窗口时自动重新打开该文件。我正在为 mac 申请 谢谢 这是数据源的代码:
#import "tableViewData.h"
#import "Customer.h"
@implementation tableViewData
-(id) init
self = [super init];
if (self)
list = nil;
filepath = @"/Users/Gautambir/Desktop/CustomerNames.txt";
if ([[NSFileManager defaultManager]fileExistsAtPath:filepath])
list = [[NSMutableArray alloc] initWithContentsOfFile:filepath];
else
list = [[NSMutableArray alloc]initWithObjects:name,memberNumber ,nil];
[list writeToFile:filepath atomically:YES];
return self;
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
return [list count];
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
Customer *Customer = [list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
return [Customer valueForKey:identifier];
-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
Customer *Customer = [list objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
[Customer setValue:object forKey:identifier];
-(void)save
[list writeToFile:filepath atomically:YES];
-(IBAction)add:(id)sender
[list addObject:[[Customer alloc]init]];
[tableView reloadData];
NSLog (@"array:%@",list);
-(IBAction)remove:(id)sender
NSInteger row = [tableView selectedRow];
if (row != -1)
[list removeObjectAtIndex:row];
[tableView reloadData];
-(void)dealloc
[super dealloc];
@end
这是客户对象类的 .m 文件:
#import "Customer.h"
@implementation Customer
@synthesize name;
@synthesize memberNumber;
-(id) init
self = [super init];
if(self)
name = @"Test";
int i = arc4random()%1000000000000000000;
if (i<0)
memberNumber = i*-1;
else
memberNumber = i;
return self;
-(void)dealloc
[name release];
[super dealloc];
-(id)initWithCoder:(NSCoder *)aDecoder
self = [super init];
if (self)
name = [[aDecoder decodeObjectForKey:@"name"]retain];
memberNumber = [aDecoder decodeIntForKey:@"memberNumeber"];
return self;
-(void)encodeWithCoder:(NSCoder *)aCoder
[aCoder encodeObject:name forKey:@"name"];
[aCoder encodeInt:memberNumber forKey:@"memberNumber"];
@end
强文本
【问题讨论】:
【参考方案1】:我很抱歉发布另一个答案 - 我误读了标签,我的第一个答案是依赖于 ios。 这是在 OSX 中执行此操作的方法:
保存
NSMutableArray *array = ... //your array
[array addObject:...];
[array addObject:...];
[array addObject:...];
...
// then use an NSData to store the array
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
NSString *path = @"/Users/User/path...";
[data writeToFile:path options:NSDataWritingAtomic error:nil];
检索
NSMutableArray *archive = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
塞巴斯蒂安
【讨论】:
亲爱的塞巴斯蒂安。你是惊人的和救生员。你可以想象我花了多长时间试图完成这项工作,所以很多人都很粗鲁,不回答这个问题,但你太棒了,非常感谢你。我还有另一个问题想问你,如果我想从另一个窗口上的客户 ID 中说出客户名称,我想问你正确回答问题,我可以打开该窗口我将如何去做,请告诉我.再次感谢你 嗨,首先:很高兴我能帮上忙,但是:在 *** 上,它是一个rule
tu 投票并接受你喜欢的答案 ;-) 这将关闭问题并使其从溪流。请这样做。对于任何其他问题,请打开一个新问题,对于可能在此处搜索特定内容的未来用户,混合不同的问题并不是一个好习惯。以上是关于需要将表格视图的内容保存为 txt 文件并稍后重新加载的主要内容,如果未能解决你的问题,请参考以下文章
我如何复制正在运行的应用程序的 RAM、保存它并稍后将其重新加载到 RAM 中?