У меня есть очень простой проект, содержащий NSTableView с 3 столбцами и кнопками для добавления новой строки, удаления строки и сохранения данных.NSTableVIew привязано к NSArrayController не сохраняет изменения
Для целей этого проекта я хочу, чтобы сохранить значения в NSUserDefaults дб И все это делать без программирования, поэтому IB соединения и свойства следующим образом:
Добавлена объекта массива контроллера через IB. Его содержимое Контролера привязано к контроллеру общих пользователей по умолчанию (ключ контроллера: значения, путь ключа модели: значения myvalues), проверяет содержимое содержимого как составное значение.
Добавлен набор табличных представлений, чтобы иметь 3 столбца и установить как основанные на представлении.
Для самого представления таблицы, его контент связан с массива контроллера (Controller Key arrangedObjects) и его селекционных индексов связаны с массива контроллера (Controller Key selectionIndexes)
Для каждого столбца таблицы, в таблице View Элемент ячейки (третий в цепочке) Значение привязано к представлению ячейки таблицы (ключ контроллера пуст, путь ключа модели установлен на objectValue.xxxx, где xxxx - произвольная строка имени для столбца); также атрибут «Поведение» имеет значение «редактируемый».
Добавляемые строки и удаленные кнопки строки, связанные с действиями, подключаются к методам добавления и удаления контроллера массива, а действие, связанное с нажатием кнопки «Сохранить», связано с методом сохранения общих настроек по умолчанию.
Когда я запускаю проект, я изначально могу «добавить», ввести значения для столбцов, нажать «Сохранить», завершить выполнение, а когда я заново запустил его, будут показаны данные. Однако, если я попытаюсь изменить любую из этих данных, изменения не будут сохранены. Если я добавлю дополнительные строки и введите данные, данные не будут сохранены (строки будут там, просто пусты). Удаление строк работает так, как ожидалось. (ПРИМЕЧАНИЕ: также, если я добавил несколько строк в исходное исполнение, только первые будут иметь данные о последующих исполнениях)
Мой вопрос: Почему данные не будут меняться (после первого)? Кажется, что где-то есть недостающий слой.
Я создал второй проект, очень похожий на первый, но указанный сотовой таблицы, а не на основе представления; также привязки проще с привязками NO для табличного представления, а просто привязывают ячейки таблицы Value to Array Controller. Этот проект отлично работает. Данные ячейки можно редактировать, введены новые данные строки, и т.д.
Любая помощь будет оценена
Дубликат http://stackoverflow.com/q/27308592/1312143, на который я ответил, хотя я никогда не слышал ответа, если бы мой ответ сработал. Попробуй и посмотри. –
спасибо за ответ; поскольку моя цель состояла в том, чтобы сделать это без какой-либо кодировки, я думаю, что сейчас я буду придерживаться таблицы на основе сотовой сети. Если я попробую ваш подход в будущем, вы узнаете, работает ли он. – user2132980