2012-04-09 7 views
0

NSMutableArrayによってデータが与えられたテーブルビューの内容をtxtファイルに保存してから、そのファイルを自動的に開く必要がありますウィンドウがテーブルビューを含むとき。私は、これは、データソースのコードです 感謝 MAC
のためのアプリケーションを作っています:テーブルビューの内容をtxtファイルとして保存して後で再ロードする必要があります

#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 

強いテキスト

答えて

0

私はタグを誤って読んでしまいました。私の最初の答えは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]; 

セバスチャン

+0

親愛なるセバスチャンを取り出します。あなたは素晴らしいですし、人生の節約になります。あなたはこの仕事をしようとどれくらいの時間を費やしているのか想像することができます。だから多くの人が失礼で、質問に答えることはできませんが、すごく感謝します。私はまた別の質問をしていますが、私はあなたが私のことを知っていることを私は知らせるようになるだろうどのように私が開くことができる別のウィンドウで顧客IDから顧客名を言うことを望んでいる場合は、 。おかげでu soooooはもう一度 –

+0

こんにちは、まずは:喜んで私は助けることができた、 :しかし、StackOverflowの 'ルール' tu upvoteとあなたが好きな答えを受け入れる;-)これは、質問を閉じてストリームから消えるようになります。そうしてください。その他の質問については、ここで特定のものを検索する可能性のある将来のユーザーのために、新しい質問を混在させるための新しい方法を開いてください。 –

関連する問題