В теории, здесь нет ничего сложного . Хранение selectionIndexes
ничем не отличается от хранения любого другого NSIndexSet. Вам просто нужно создать сущность с именем Transformable , может быть, selectedRows
, а затем поместить туда значение arrayController.selectionIndexes
прямо перед сохранением файла и прочитать его сразу после прочтения документ в. Вам не нужно беспокоиться ни о чем другом, CoreData будет просто справиться с этим. Если у вас еще нет логического «корневого» элемента для хранения этого, просто создайте новый объект, возможно, с именем UIState с таким свойством, и сохраните его там.
На мой взгляд, вы, вероятно, не хотите связывать это значение с этой сущностью по нескольким причинам. Во-первых, вы, вероятно, не хотите, чтобы изменение выделенного фрагмента само по себе загрязняло документ, верно? Я имею в виду, может быть, вы делаете, но это звучит скорее как раздражение, чем функция, и сохранение выбора, в общем, звучит скорее как удобство, чем функция чартера. Но я не знаю ваше заявление, поэтому сложно сказать.
Другая причина в том, что если вы связываете arrayController.selectionIndexes
и arrayController.contentArray
в IB, то, когда он связывает привязку contentArray
, похоже, что он выписает начальное значение для selectionIndexes
сразу после contentArray привязан, когда документ открывается, что обесценивает вашу реальную ценность. (Я могу представить, что это что-то вроде: «Вы просто устанавливаете содержимое, поэтому любое предыдущее значение для выбора теперь недопустимо, давайте перезапишем его ничем!») Так что, по крайней мере, если вы связали значение, вы Я должен был придумать какой-нибудь умный способ избежать того, чтобы твоя реальная стоимость была сужена этой первоначальной записью.
Мне кажется, что было бы лучше, если бы вы не связывали это непосредственно с моделью, а привязали ее к временному свойству документа, из которого вы можете читать во время сохранения, и писать в открытое время документа , Вот куда я пойду с этим.