2010-07-02 4 views
0

У меня есть приложение адресной книги. Мой класс AddressController.h это ---хранение адресной книги записи

@interface AddressController : NSObject { 
    IBOutlet id nameField; 
    IBOutlet id addressField; 
    IBOutlet id tableView; 
    NSMutableArray *records; 
} 
- (IBAction)addRecord:(id)sender; 
- (IBAction)deleteRecord:(id)sender; 
- (IBAction)insertRecord:(id)sender; 

@end 

Implementation class is as follow:- 


@implementation AddressController 

- (id)init 
{ 
    records = [[NSMutableArray alloc] init]; 
    return self; 
} 


- (NSDictionary *)createRecord 
{ 
    NSMutableDictionary *record = [[NSMutableDictionary alloc] init]; 
    [record setObject:[nameField stringValue] forKey:@"Name"]; 
    [record setObject:[addressField stringValue] forKey:@"Address"]; 
    [record autorelease]; 
    return record; 
} 

- (IBAction)addRecord:(id)sender 
{ 
    [records addObject:[self createRecord]]; 
    [tableView reloadData]; 
} 

- (IBAction)deleteRecord:(id)sender 
{ 
    int status; 
    NSEnumerator *enumerator; 
    NSNumber *index; 
    NSMutableArray *tempArray; 
    id tempObject; 
    if ([tableView numberOfSelectedRows] == 0) 
     return; 
    NSBeep(); 
    status = NSRunAlertPanel(@"Warning!", @"Are you sure that you want to delete the selected record(s)?", @"OK", @"Cancel", nil); 
    if (status == NSAlertDefaultReturn) 
    { 
     enumerator = [tableView selectedRowEnumerator]; //enumerator here gets indexes of selected rows 
     tempArray = [NSMutableArray array]; 
     while ((index = [enumerator nextObject])) 
     { 
      tempObject = [records objectAtIndex:[index intValue]]; // we store selected rows in temporary array 
      [tempArray addObject:tempObject]; 
     } 
     [records removeObjectsInArray:tempArray]; // we delete records from 'records' array which are present in temporary array 
     [tableView reloadData];   
    } 
} 

- (IBAction)insertRecord:(id)sender 
{ 
    int index = [tableView selectedRow]; 
    [records insertObject:[self createRecord] atIndex:index]; 
    [tableView reloadData]; 
} 

- (int)numberOfRowsInTableView:(NSTableView *)aTableView 
{ 
    return [records count]; 
} 

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex 
{ 
    id theRecord, theValue; 
    theRecord = [records objectAtIndex:rowIndex]; 
    theValue = [theRecord objectForKey:[aTableColumn identifier]]; 
    return theValue; 
} 


- (void)awakeFromNib 
{ 
    [tableView reloadData]; 
} 

@end 

Я могу добавлять и удалять записи в/из адресной книги. Но когда я снова запустил приложение, все записи исчезли. Я хочу хранить записи где-нибудь (например, по умолчанию для пользователей), так что, когда я запускаю приложение, вновь существующие записи отображаются в адресной книге. Я не понимаю, как это сделать, используя пользовательские настройки по умолчанию. Пожалуйста, предложите решение.

ответ

0

Не используйте для этого значения по умолчанию для пользователей. Возможно, вам захочется изучить основные данные. Другим вариантом для изучения является NSCoding.

NSCoding будет иметь меньшую кривую обучения, довольно простую для реализации. Основные данные более жесткие для понимания, но в долгосрочной перспективе они станут более разумным выбором.

Смежные вопросы