0

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

強いテキスト

4

1 に答える 1

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];

セバスチャン

于 2012-04-10T22:08:00.603 に答える