0

业余爱好者 Cocoa 程序员在这里。一直在寻找所有常见的地方,但这似乎解释得相对不足:

  • 我正在写一些不寻常的东西。它比桌面发布应用程序简单得多,但也很相似。我想在画布上任意放置可编辑的文本框。

  • 这是基于文档的,我真的很想使用 Core Data。

现在,cocoa 文本处理系统似乎处理了一个四类结构:NSTextStorage、NSLayoutManager、NSTextContainer,最后是 NSTextView。我已经研究过这些并且知道如何使用它们,有点。一直在制作一些原型,它适用于简单的应用程序。

当我进入持久性时,问题就来了。我不知道如何通过 Cocoa Bindings 或其他方式将 NSTextStorage 的内容(=实际文本)存储在我的托管对象上下文中。

我考虑过在这些对象中覆盖方法对,例如 -words、-setWords:。这可以让我将单词链接到一个字符串,我知道如何将其存储在 Core Data 中。但是,我必须重写任何影响文本的方法——这似乎有点多。

感谢您的任何见解。

4

2 回答 2

0

NSTextStorage 只是 NSMutableAtrributedString 的子类,它支持 NSCoding 协议,因此您可以使用默认的 NSKeyedUnArchiveFromData 转换将其作为可转换属性保存在 Core Data 中。

我很确定这适用于您可能想要保存的所有其他类,但视图可能除外。(我从未尝试将它们存储在 Core Data 中,但理论上可以这样做。)

任何实现/继承 NSCoding 或具有initWithCoder: 方法的类都可以作为可转换属性存储在代码数据中。

于 2010-06-12T16:27:34.470 回答
0

我建议将value文本视图的绑定绑定到您的模型实体之一的字符串属性,或者attributedString绑定到可转换的属性。这将视图连接到模型,而无需您自己来回传递文本。

于 2010-06-13T00:30:50.563 回答