Я загружаю массив предметов из plist. Пользователь может выбрать любой элемент и добавить его в новый массив элементов, который отображается на экране.iOS Удаление объекта из массива
Я делаю это, но пользователь также может удалить игрока из любой строки. Моя проблема в том, что пользователь удаляет объект, который перетасовывает список вверх. Где я хочу сохранить эту строку пустой.
Мой делеция код:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *user_id = [prefs objectForKey:@"user_id"];
NSString *fixture_id = [prefs objectForKey:@"fixture_id"];
// Get path to documents directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
[self.usersSelectionArray removeObjectAtIndex:indexPath.row];
if (self.usersSelectionArray == nil) {
// disable swipe to delete?
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if ([paths count] > 0)
{
// Path to save array data
NSString *arrayPath = [[paths objectAtIndex:0]
stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-%@",user_id, fixture_id]];
// Write array
[self.usersSelectionArray writeToFile:arrayPath atomically:YES];
}
// If blank array delete the file as not required
if (self.usersSelectionArray.count == 0) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-%@", user_id, fixture_id]];
NSError *error;
if(![[NSFileManager defaultManager] removeItemAtPath:path error:&error])
{
//TODO: Handle/Log error
}
}
[self.tableView reloadData];
}
Он также проверяет, если счетчик равен 0 и удаляет PLIST, воссоздает на нагрузке, если требуется.
Спасибо! Это сработало: D, что бы я сделал, если бы захотел повторно вставить объект в этот индекс? –
Замените объект 'NSNull' своим объектом и перезагрузите таблицу. Или что вы имеете в виду? – DrummerB
В принципе, если они удаляют строку 2, а затем возвращают строку 2 и выбирают игрока, он просто добавляет элемент в нижнюю часть массива с сохранением объекта NULL. –