Как обновить данные UIDocument

У меня есть один локальный UIDocument, который содержит сохранение NSArray недавно просмотренных статей в один файл.

Мое приложение основано на UITabbarController. На одной вкладке есть список извлеченных статей из Интернета, а на другой - UITableView, поддерживаемый этим UIDocument. Все загружается просто отлично, проблема в том, что UIDocument не обновлялся после открытия. Когда я использую данные Core и NSFetchedResultController, они без проблем работают с этими controllerWillChangeContent. Есть ли аналог для UIDocument?


person sarunw    schedule 09.01.2013    source источник


Ответы (1)


UIDocument предоставляет для этого updateChangeCount. Отправьте это в свой UIDocument (подкласс) после того, как вы внесли изменение, или позвольте UIDocument прослушивать уведомления, отправленные от контроллеров представления, с соответствующим набором селектора.

Например. в инициализации вашего класса UIDocument:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingChanged) name:@"DocumentDidChangeNotification" object:nil];

Также в UIDocument:

- (void)somethingChanged { [self updateChangeCount:UIDocumentChangeDone]; }

И в контроллере представления, когда содержимое изменилось, выполните:

[[NSNotificationCenter defaultCenter] postNotificationName:@"DocumentDidChangeNotification" object:nil];

person SAE    schedule 09.01.2013
comment
Я думаю, что updateChangeCount предназначен для функции автоматического сохранения, и это не отвечает, как синхронизировать состояние между двумя открытыми UIDocument. - person sarunw; 10.01.2013
comment
Почему два UIDocuments? Ваш вопрос касается одного UIDocument. Что не так с автосохранением? Это способ сделать это, как также объяснено здесь - person SAE; 10.01.2013
comment
Я имею в виду один пользовательский класс UIDocument, но два экземпляра открывают один и тот же документ (один открывается для сохранения недавно просмотренной статьи, а другой открывается для их просмотра на второй вкладке). После добавления новой статьи в список экземпляр UIDocument на второй вкладке не обновляется, чтобы отразить это изменение. - person sarunw; 10.01.2013
comment
Это не очень хорошая идея. Один документ должен управляться только одним экземпляром. У вас не должно быть второго экземпляра документа, но вы должны работать с одним и тем же экземпляром в обоих контроллерах представления. - person SAE; 10.01.2013
comment
Любое предложение ? Потому что он всегда открывается на вкладке 2, которая представляет собой UITableView недавно просмотренной статьи. И когда пользователи просматривают статьи на вкладке 1, мне приходится обновлять документ, чтобы добавить новую статью в список. - person sarunw; 10.01.2013
comment
Это нормально, но просто не используйте два экземпляра одного и того же документа. Например. откройте документ в своем AppDelegate (создайте экземпляр) и используйте этот экземпляр из ваших контроллеров просмотра. Затем обновления работают, как я сказал в своем ответе. - person SAE; 10.01.2013
comment
Есть проблема с этим. Если ваше приложение выйдет из строя до того, как вы закроете документ, вы потеряете все. - person Paulo Cesar; 26.05.2016