Как использовать базовые данные с системой ввода текста какао? - PullRequest
0 голосов
/ 12 июня 2010

Хобби-программист Какао здесь. Обыскивали все обычные места, но это кажется недостаточно объясненным:

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

  • Это документ, и мне бы очень хотелось использовать базовые данные.

Теперь система обработки текста какао, похоже, имеет дело с четырехклассовой структурой: NSTextStorage, NSLayoutManager, NSTextContainer и, наконец, NSTextView. Я изучил их и знаю, как их использовать. Делали несколько прототипов, и это работает для простых приложений.

Проблема возникает, когда я вхожу в постоянство. Я не знаю, как , с помощью привязок какао или чего-то еще, хранить содержимое NSTextStorage (= фактический текст) в контексте моего управляемого объекта.

Я рассмотрел переопределение пар методов, таких как -words, -setWords: в этих объектах. Это позволило бы мне связать слова со строкой, которую я знаю, как хранить в Core Data. Однако мне придется переопределить любой метод, который влияет на текст - и это кажется немного большим.

Благодарен за любые идеи.

Ответы [ 2 ]

0 голосов
/ 13 июня 2010

Я предлагаю привязать value привязку текстового представления к строковому атрибуту одного из объектов вашей модели или attributedString привязку к трансформируемому атрибуту. Это позволяет подключить представление к модели без необходимости передавать текст туда и обратно.

0 голосов
/ 12 июня 2010

NSTextStorage - это просто подкласс NSMutableAtrributedString, который поддерживает протокол NSCoding, поэтому вы можете сохранить его в Базовых данных в качестве преобразуемого атрибута, используя преобразование NSKeyedUnArchiveFromData по умолчанию.

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

Любой класс, который реализует / наследует NSCoding или имеет метод initWithCoder:, может быть сохранен в данных кода как преобразовываемыйприписывать.

...