Сохранение списка при каждом изменении

Я пишу приложение, в котором пользователь может добавлять и удалять объекты из нескольких списков. Чтобы сохранить свои списки даже в случае сбоя приложения, я хочу записывать их на диск каждый раз, когда они меняются. Мой текущий план состоит в том, чтобы создать класс, который наблюдает за списками и, таким образом, уведомляется каждый раз, когда он изменяется, чтобы архивировать их (списки и все объекты в них следуют протоколу NSCoding).

Следует отметить, что я заранее знаю, сколько будет списков, и что эти списки не будут расти до более чем 100 наименований (большинство будет 10-20).

Это лучший способ достичь того, чего я хочу достичь? Если это даже проблема, о которой я беспокоюсь, или допустимо только создавать память этих списков, когда приложение выходит? Я также рассматривал подкласс NSMutableArray, чтобы создать класс, который сохраняет себя всякий раз, когда он изменяется, поэтому ни один класс не должен знать обо всех списках, которые должны быть сохранены.

1 ответ

Во-первых, хороший инстинкт здесь беспокоиться о пользовательских данных. Да, конечно, вы должны исправить свои аварии. Но даже в этом случае вы должны сначала защищать пользовательские данные. Во-вторых, вы должны быть обеспокоены временем автономной работы пользователя. Поэтому вы не должны часто ударять по своей флешке.

Если количество изменений NSMutableArray, то я бы рекомендовал создавать объекты "списка", которые имеют NSMutableArray (а не is- NSMutableArray). Вы можете просто написать себя на диск в любое время, когда кто-то вызывает addItem: чтобы всегда быть в синхронизации. Если изменения происходят очень быстро, довольно легко построить батуты, которые будут экономить "каждую секунду, если бы произошли изменения, но не чаще, чем раз в секунду". (Если это какая-то проблема, добавьте комментарий, и я отправлю код или блог, это не сложно).

licensed under cc by-sa 3.0 with attribution.