在Objective-c中编码2D数组

时间:2012-03-06 14:56:44

标签: iphone objective-c ios encoding

我有一个带有两个2D数组的自定义对象,如下所示:

float a[5][5];
float b[5][10];

我想编码这个对象:

- (void)encodeWithCoder:(NSCoder *)coder
{
    // Encode a
    // Encode b
}

如何对这些2D阵列进行编码和解码?我找不到合适的方法来执行此操作。 在此先感谢,

3 个答案:

答案 0 :(得分:3)

您可以使用以下内容创建结构:

typedef struct myStruct {

    float a[5][5];
    float b[5][10];

}MyStruct;

然后使用NSValue将它们编码为对象。

MyStruct i;
memset(&i, 0, sizeof(i));
//Set values on struct

NSValue *v = [NSValue valueWithBytes:&i objCType:@encode(MyStruct)];

现在,您可以将结构视为对象,然后使用NSArrays等等。

要阅读您可以使用的值:

MyStruct i;

[v getValue:&i];

我这样做是为了使用流和旧服务器,它运行顺利。

希望它有所帮助。

答案 1 :(得分:1)

将它们粘贴到objective-c容器中以进行编码/解码过程。

答案 2 :(得分:1)

没有预先构建的方法 - 您需要自己编写。最简单的方法是首先为行数和列数写两个int,然后逐个写出所有R*C个元素。

解码同样简单 - 读取RC的两个整数,然后运行两个嵌套循环读取float

为此定义两个辅助函数,以避免两次复制粘贴相同的代码。