2012-05-20 2 views
0

У меня .plist файл с NSMutableDictionary, что я Наполнение UITableView как так:Добавить/Удалить элемент из NSMutableDictionary через UITableView

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

NSString *myFile = [[NSBundle mainBundle] 
        pathForResource:@"courses" ofType:@"plist"]; 
courses = [[NSMutableDictionary alloc] initWithContentsOfFile:myFile]; 
courseKeys = [courses allKeys]; 

} 

И:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Course"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

// Configure the cell... 

NSString *currentCourseName = [courseKeys objectAtIndex:[indexPath row]]; 
[[cell textLabel] setText:currentCourseName]; 

return cell; 
} 

Я пытаюсь позволяют пользователю прокручивать + удалять, а также «добавлять» новые элементы на plist, используя ячейки UiTableView. Это код, я использую, чтобы сделать это:

- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // Delete the row from the data source 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]  withRowAnimation:UITableViewRowAnimationFade]; 
} 
else if (editingStyle == UITableViewCellEditingStyleInsert) { 
    // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 

Когда я запустить симулятор и сделать это он дает мне ошибку, заявив

«Invalid обновление: неверное число строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (7), должно быть равно количеству строк, содержащихся в этом разделе, перед обновлением (7) плюс или минус количество строк, вставленных или удаленных из этого раздела (вставлено 0 , 1 удалено) и плюс или минус количество строк, перемещенных в или из этой секции (0 перемещено, 0 перемещено). '"

Может ли кто-нибудь помочь мне здесь?

ответ

1

Вы удаляете строку из таблицы, но не из источника данных. CourseKeys должен быть mutableArray, из которого вы удаляете удаленные ключи.

+0

спасибо. Мне очень сложно понять, как это сделать - я изменил массив на nsmutablearray, и теперь он бросает ошибку, говоря, что это неправильно. все еще получая ту же ошибку и по итоговым значениям. какие-нибудь советы? – TerryG

2

Вы заполняете таблицу из массива courseKeys. Таким образом, в вашем делететом метод

- (void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //whether it is an add or edit or delete modify your array from which you are populating the table and reload the table 
} 
Смежные вопросы