Objective-C, iOS, NSKeyedUnarchiver, только получение данных в одной ячейке - PullRequest
0 голосов
/ 25 февраля 2012

Я пробовал петли и т. Д., Но, похоже, ничего не работает.У меня есть текстовое поле, и когда я нажимаю «Сохранить», я помещаю текст в ячейку таблицы. Если я сделаю это снова, предыдущая запись будет заменена.По сути, я не могу добавить еще одну ячейку, если я не добавлю объект в массив вручную.Данные извлекаются правильно, я использовал NSLog, и данные также сохраняются.

Я думаю, что проблема здесь где-то:

 NSFileManager *filemgr;
 NSString *docsDir;
 NSArray *dirPaths;

 filemgr = [NSFileManager defaultManager];

// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);

docsDir = [dirPaths objectAtIndex:0];

// Build the path to the data file
datafilePath = [[NSString alloc] initWithString: [docsDir 
                                                  stringByAppendingPathComponent: @"data.archive"]];
tablesubtitles = [[NSMutableArray alloc]init];

tabledata = [[NSMutableArray alloc] init];

// Check if the file already exists
if ([filemgr fileExistsAtPath: datafilePath])
{
    NSMutableArray *dataArray;

    dataArray = [NSKeyedUnarchiver 
                 unarchiveObjectWithFile: datafilePath];


    titlestring = [dataArray objectAtIndex:0 ];
    detailsstring = [dataArray objectAtIndex:1];



    [tabledata addObject:titlestring];
    [tablesubtitles addObject:detailsstring];
    }

вот другой метод для реальной таблицы:

 -(UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{

UITableViewCell *cell = nil;

cell = [tableView dequeueReusableCellWithIdentifier:@"homeworkcell"];


 if(cell == nil)
 {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"homework"];

 }



NSString *cellValue = [tabledata objectAtIndex:indexPath.row];

NSString *subtitle = [tablesubtitles objectAtIndex:indexPath.row];




cell.textLabel.text= cellValue;

cell.detailTextLabel.text= subtitle;

cell.textLabel.font = [UIFont systemFontOfSize:14.0];
cell.textLabel.backgroundColor    =   [ UIColor clearColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];       




 // Configure the cell.

//-----------------------------------------START----------------------------Set image of cell----
   cellImage = [UIImage imageNamed:@"checkboxblank.png"];

   cell.imageView.image = cellImage;

  //--------------------------------------------END---------------------------end set image of cell--  

return cell;


}

вот где я сохраняю данные:

  NSMutableArray *contactArray;

    contactArray = [[NSMutableArray alloc] init];
    [contactArray addObject:titlefield.text];
    [contactArray addObject:detailstextfield.text];
    [contactArray addObject:date ];
    [NSKeyedArchiver archiveRootObject: 
     contactArray toFile:datafilePath];

1 Ответ

0 голосов
/ 25 февраля 2012

Воссоздаете ли вы каждую модель данных таблицы времени?

tablesubtitles = [[NSMutableArray alloc]init];

tabledata = [[NSMutableArray alloc] init];

Для этого необходимо создать переменные класса.

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