Я делаю простое 3-уровневое приложение с табличным просмотром на 1-м и 2-м уровнях.Добавить новые данные в приложение после обновления приложения
Имена строк в контроллерах tableviews сохраняются в массивах в файле plist. Когда пользователь переупорядочивает строки, я просто сохраняю новый порядок как новый массив в объекте NSUserdDefaults
. И каждый раз, когда я загружаю контроллер Tableview, я проверяю, пустой объект NSUserdDefaults
или нет. Если он не пуст, я беру порядок строк из массива в NSUserdDefaults
, в противном случае - из файла plist.
Ниже приведен пример кода для первого уровня Tableview контроллера
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Topics";
// Checking User changes
NSMutableArray* sectionList = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"section"]];
if ([sectionList count] != 0) {
self.sections = [[NSMutableArray alloc] initWithArray:sectionList copyItems:YES];}
else {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"plist"];
self.sections = [NSMutableArray arrayWithContentsOfFile:filePath];}
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath{
NSString *item = [self.sections objectAtIndex:fromIndexPath.row];
[self.sections removeObject:item];
[self.sections insertObject:item atIndex:toIndexPath.row];
[[NSUserDefaults standardUserDefaults] setObject:self.sections forKey:@"section"];}
Проблема в том об обновлении. Если я добавлю новые данные (новые строки) в файл plist и приложение для обновления, пользователь не увидит новые строки в контроллере tableview, потому что его объект NSUserdDefaults
не пуст, а имена и порядок строк будут загружены из этого объекта. Я думал об очистке объектов NSUserdDefaults
, но я не мог найти, как это сделать сразу после обновления и больше времени.
У вас есть идеи, как с этим бороться?
Любая помощь очень ценится
Спасибо! Я понял логику, могу ли я задать некоторые дополнительные вопросы (я новичок в iOS): – user2498776
Конечно, напишите мне строку или разместите их в отдельном вопросе, если они больше. –
Спасибо. 1) что это означает «пакетная версия» 2) как я могу проверить, произошло ли обновление? Я имею в виду, как я знаю, что мне нужно увеличить номер версии. 3) «новые свойства» - вы имеете в виду дополнительные данные, которые будут сохранены в NSUserDefaults, но ранее не были сохранены? Например, в версии 2 я начну сохранять количество строк и пользователя, который не обновлен до версии 2, но обновления версии 3 не будут иметь этот объект. Поэтому мне нужно проверить, существуют ли все объекты NSUserDefaults, а если нет - создать их. правильно? – user2498776