我有一个带有两个2D数组的自定义对象,如下所示:
float a[5][5];
float b[5][10];
我想编码这个对象:
- (void)encodeWithCoder:(NSCoder *)coder
{
// Encode a
// Encode b
}
如何对这些2D阵列进行编码和解码?我找不到合适的方法来执行此操作。 在此先感谢,
答案 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
个元素。
解码同样简单 - 读取R
和C
的两个整数,然后运行两个嵌套循环读取float
。
为此定义两个辅助函数,以避免两次复制粘贴相同的代码。