以下是我的架构的示例
table Document {
root_layer:Layer;
bitmaps:[Bitmap];
subdocuments:[Document];
}
table Layer {
id:int;
sublayers:[Layer];
}
...
此处有趣的部分是document → root_layer → sublayers
假设我要修改整个子图层数组:完全重写它,而不仅仅是替换索引处的元素。就我看来,Mutability API只允许替换索引处的元素,而不是用新数组替换整个数组,对吗?
今天我最终重新创建整个文档,复制原始文件中的所有字段,一旦我到达嵌套sublayers
,我将其替换为新数组
有更好的方法吗?
答案 0 :(得分:1)
不,不是真的。
使用反射API,可以将新表附加到现有缓冲区,然后调整诸如sublayers
之类的向量的大小,并使元素指向新(或旧)表。但是目前没有办法删除旧表,并且使用API非常痛苦,并且调整大小很慢(复杂平面结构的就地变异很难)。
或者您可以从头开始创建一个新的缓冲区,如果您想保存自己为未修改的部分编写手动复制代码,可以再次使用反射API(CopyTable
)或对象用于复制剩余部分的API。
如果您发现您经常想要更改缓冲区的一部分而不是其余部分,可能......它们应该位于2个不同的缓冲区中?
如果由于某种原因静态数据必须与动态数据位于同一个缓冲区中,一种方法是将静态数据放在nested_flatbuffer
中,这样就可以将它传输到一个带有单个{的新缓冲区{1}}。
我担心平均使用对象API是你最好的选择。