хранение записей адресной книги - PullRequest
0 голосов
/ 02 июля 2010

У меня есть приложение для адресной книги. Мой класс 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

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

1 Ответ

0 голосов
/ 02 июля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...