Ich muss in der Lage sein, den Inhalt meiner Tabellenansicht, die Daten von einem NSMutableArray enthält, in eine TXT-Datei speichern und dann diese Datei automatisch öffnen müssen wenn das Fenster die Tabellenansicht enthält. Ich mache eine Anwendung für Mac
dank Dies ist der Code für die Datenquelle:muss den Inhalt der Tabellenansicht als TXT-Datei speichern und später neu laden
#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
und dies ist die .m-Datei für die Kunden Objektklasse:
#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
starker Text
Lieber Sebastian zu speichern. Sie sind erstaunlich und ein Lebensretter. Sie können sich vorstellen, wie lange ich versucht habe, diese Arbeit zu machen, und so viele Menschen auf SO sind unhöflich und beantworten die Frage nicht, aber Sie sind erstaunlich, danke Ihnen soooooo viel. ich habe auch eine andere Frage, die ich dich fragen möchte, wie du Fragen richtig antwortest, wenn ich den Kundennamen nur von einer Kundennummer in einem anderen Fenster sagen möchte, das ich öffnen kann, wie ich das machen würde, lass es mich bitte wissen . vielen Dank noch einmal sooooo viel wieder –
Hallo, zuerst einmal: froh, ich könnte helfen, aber dann: auf StackOverflow ist es eine 'Regel' tu upvote und akzeptieren Antworten, die Sie mögen ;-) dies wird die Frage schließen und es aus dem Stream verschwinden . Bitte mach es. Für weitere Fragen, öffnen Sie eine neue, es ist nicht gut, verschiedene Fragen zu mischen, für zukünftige Benutzer, die hier etwas bestimmtes suchen könnten. –