如何在Core Data中存储Matrix或Vector数据结构?

时间:2010-06-04 17:54:55

标签: iphone core-data vector matrix

我正在构建一个需要在核心数据中存储某种矩阵或矢量数据的iPhone应用程序。由于某些未知原因,iPhone SDK在其基础类中不包含任何类型的矩阵数据结构,因此我构建了自己的数据结构,该结构使用NSMutableArray NSMutableArrays来存储数据。到目前为止一切都很好。

我想将此数据结构存储在我的核心数据存储中,并且我已经阅读了有关使用transformable attributes存储非标准结构的信息。当我尝试存储数据结构时,出现以下错误:[FCMatrix encodeWithCoder:]: unrecognized selector sent to instance我正在运行的代码如下,基本上只是在我的实体中设置属性:

[collection setMatrix:matrix];

我在这一点上的假设是,由于矩阵是一个可转换的属性,而我的FCMatrix类是一个自定义对象(从NSObject继承),我需要在我的数据结构类中实现方法encodeWithCoder,以便Core数据可以正确编码,存储,然后解码数据以重新创建我的数据结构。任何人都可以解释这样做的最佳方式吗?

另一个想法 - 我想知道你的想法 - 是重建我的FCMatrix类来从NSMutableArray创建子类。如果NSMutableArray可以转换,那么我将被设置。

或者,我确信这是太多的工作,必须有一个更简单的方法来做到这一点。有没有人有经验在核心数据中存储矩阵数据?

2 个答案:

答案 0 :(得分:0)

或许考虑将数组转换为字节,这些字节可以存储在NSData对象中并放入二进制属性中。

答案 1 :(得分:0)

我想出了解决自己问题的方法:

  • 核心数据可以将核心数据中的NSMutableArray个对象存储为可转换的属性。
  • 如果我创建自定义Matrix类,例如“FCMatrix”,然后核心数据将不知道如何将其存储为可转换对象。
  • 因此,我可以将我的Matrix类创建为一个完全静态的类。然后,我可以将NSMutableArray对象传递给函数,并使用我的旧逻辑对它们进行操作。