需要将表格视图的内容保存为 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 文件并稍后重新加载的主要内容,如果未能解决你的问题,请参考以下文章

PHP将网页内容转换为纯文本文件并保存为TXT

word中的内容如何导入Excel指定表格里?

我如何复制正在运行的应用程序的 RAM、保存它并稍后将其重新加载到 RAM 中?

如何写BAT 修改指定文件内容,并保存

VB6 - 如何将 URL 内容存储在字符串中并保存为文件(例如 .txt)

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