在ParseObject上保存2D数组

时间:2015-05-07 13:59:14

标签: java arrays parse-platform

我正在尝试将2D int数组int [] []保存到名为group的ParseObject:

        ParseObject newGroup = new ParseObject("Group");
        newGroup.put("group_name",grpName);
        int[][] grpTable = new int[grpSize][grpSize];
        initializeTable(grpTable,grpSize);
        newGroup.put("group_table",grpTable);

在最后一行应用程序崩溃,抛出:

  

java.lang.IllegalArgumentException:值的类型无效:class [[I

是否无法在解析中保存2D数组?你能提供替代方案吗?

我知道对于常规数组我只能使用add函数,但它在这里不起作用。

1 个答案:

答案 0 :(得分:1)

我不相信这是可能的。

我认为最简单的方法是将数据存储在单维数组中,并保留每行结束位置的计数器。

这是因为2D数组基本上是一维数组,只是呈现不同。

E.g:

[1,2,3
 4,5,6
 7,8,9];

可以表示为

[1,2,3,4,5,6,7,8,9];

只要您知道每行只有3个元素,将它转换回2D数组就很简单了。

以上是您的上述代码的外观,显然我需要看到initializeTable方法才能完全修复它。

ParseObject newGroup = new ParseObject("Group");
newGroup.put("group_name", grpName);

// Make the array grpSize*grpSize to handle rows/cols
// I.e if you normally had a 3x3 2d Array, this one would just be
// 9x1 instead.
int[] grpTable = new int[grpSize*grpSize];

// *Change initializeTable() to us a 1d array*.
initializeTable(grpTable, grpSize);
newGroup.put("group_table", grpTable);