Как я могу определить, когда NSPersistentStore необходимо сохранить?

#iphone #ios #core-data

#iPhone #iOS #core-данные

Вопрос:

У меня есть приложение для iOS, в котором я использую CoreData для хранения своих «документов». Все они используют общий NSManagedObjectContext, и я часто сохраняю контекст.

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

Я мог бы попытаться обновить отметку времени модификации во время изменения документа, но было бы чище и надежнее, если бы я мог просто выяснить, какие постоянные хранилища нуждаются в сохранении во время сохранения контекста.

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

Похоже, что это не такая уж странная вещь, и core data содержит всю информацию, которую я ищу, но у меня возникли проблемы с поиском простого способа получить доступ к этим данным.

Кто-нибудь знает простой способ?

Если я не смогу найти более простой способ, я просто переберу удаленные / измененные / вставленные объекты из контекста и напишу специальный код для каждого типа сущности, чтобы определить хранилище, к которому принадлежит объект.

Заранее спасибо за любую помощь!

Рон

Ответ №1:

[[managedObject objectID] persistentStore] это постоянное хранилище, которое вы ищете (или, возможно, nil, если объект еще не был сохранен).

В документации предполагается, что значение равно нулю, если вы назначили его хранилищу, но не сохранили; Я не уверен, что это правда (и я не вижу больше нигде, где эта информация могла бы быть сохранена). Я бы проверил его поведение на бета-версиях 3.x, 4.x и 5.0, если у вас есть к нему доступ.