2014-09-16 3 views
-1

У меня есть массив словаря, сохраненный в userdefaults. Объекты, сохраняемые в dictionaty, рассматриваются в виде таблицы. Когда кнопка удаления в ячейке просмотра таблицы щелкнула всплывающие окна, которые подтверждают, хочет ли пользователь удалить или нет. При нажатии «да» выбранный объект должен быть удален из представления таблицы, а также с помощью userdefaults. Пожалуйста, помогите. Любая помощь будет заметна. Thankx заранее.Удаление объекта из массива словарей в nsuserdefaults

+0

Вы используете 'NSUserDefaults' для хранения данных, не так ли? – trojanfoe

ответ

-2

Чтобы внести изменения в пользовательские значения по умолчанию, используйте метод setObject.

1

Простая версия без анимации

// First of all remove it from userDefaults 
NSMutableArray *yourArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"YourArray"] mutableCopy]; 
[yourArray removeObjectAtIndex:indexPath.row]; 
[[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"YourArray"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

// Reload your tableView with a new data 
self.tableData = yourArray; 
[self.tableView reloadData]; 

Расширенная версия без анимации

- (void)tableView:(UITableView *)tableView 
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // First of all remove it from userDefaults 
    NSMutableArray *yourArray = [[[NSUserDefaults standardUserDefaults] objectForKey:@"YourArray"] mutableCopy]; 
    [yourArray removeObjectAtIndex:indexPath.row]; 
    [[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"YourArray"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    // Refresh your tableView with a new data 
    self.tableData = yourArray; 
    [self.tableView beginUpdates]; 
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationMiddle]; 
    [self.tableView endUpdates]; 
} 
+0

Это выглядит неплохо, но вы можете подумать о анимации удаления определенной строки с помощью 'deleteRowsAtIndexPaths', а не использовать' reloadData', что не дает обратной связи с пользователем. – trojanfoe

+0

ах, спасибо @trojanfoe, я исправлю его – l0gg3r

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