Отдельный объект в Базовых данных - PullRequest
2 голосов
/ 27 ноября 2011

Я работаю над основанным на документе приложением MacOS Cocoa на основе базовых данных и использую NSArrayController с selectedIndexes, который я хотел бы сохранить (в документе), чтобы при сохранении документа пользователем и его повторном открытиив других местах выбираются те же строки в таблице (/ объект, в котором находится подробное представление).Есть ли способ сделать это?

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

Спасибо!

1 Ответ

1 голос
/ 06 января 2012

В теории, здесь нет ничего сложного . Хранение selectionIndexes ничем не отличается от хранения любого другого NSIndexSet. Вам просто нужно создать сущность с именем Transformable , может быть, selectedRows, а затем поместить туда значение arrayController.selectionIndexes прямо перед сохранением файла и прочитать его сразу после прочтения документ в. Вам не нужно беспокоиться ни о чем другом, CoreData будет просто справиться с этим. Если у вас еще нет логического «корневого» элемента для хранения этого, просто создайте новый объект, возможно, с именем UIState с таким свойством, и сохраните его там.

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

Другая причина в том, что если вы связываете arrayController.selectionIndexes и arrayController.contentArray в IB, то, когда он связывает привязку contentArray, похоже, что он выписает начальное значение для selectionIndexes сразу после contentArray привязан, когда документ открывается, что обесценивает вашу реальную ценность. (Я могу представить, что это что-то вроде: «Вы просто устанавливаете содержимое, поэтому любое предыдущее значение для выбора теперь недопустимо, давайте перезапишем его ничем!») Так что, по крайней мере, если вы связали значение, вы Я должен был придумать какой-нибудь умный способ избежать того, чтобы твоя реальная стоимость была сужена этой первоначальной записью.

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

...