首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GSettings的Gvariant中存储数组

在GSettings的Gvariant中存储数组
EN

Stack Overflow用户
提问于 2014-04-05 19:54:57
回答 1查看 3.2K关注 0票数 2

我试图将数组存储在GVariant中,以便将其存储在GSettings中。

我正在使用gtk+3和glib2用C编写应用程序。

通常,在每一行中包含两个元素的数组,即服务器名称和设备名称。

因此,我有以下代码:

代码语言:javascript
复制
void tux_gsettings_init() {
     tux_settings = g_settings_new("com.tuxin.TuxMusicStudio");
}

void tux_gsettings_save() {
GVariant *variant;
GVariantBuilder *builder;
builder = g_variant_builder_new(G_VARIANT_TYPE("a(ss)"));
g_variant_builder_add(builder, "a(ss)", "test1","test2");
g_variant_builder_add(builder, "a(ss)", "testa1","testa2");
variant = g_variant_new("a(ss)", builder);
g_variant_builder_unref(builder);
g_settings_set_value(tux_settings,"audio_devices_in",variant);
}

所以我试着储存两行。

我得到以下错误:

代码语言:javascript
复制
(tuxmusicstudio:4355): GLib-CRITICAL **: g_variant_builder_end: assertion 'is_valid_builder (builder)' failed

(tuxmusicstudio:4355): GLib-CRITICAL **: g_variant_get_type: assertion 'value != NULL' failed

(tuxmusicstudio:4355): GLib-CRITICAL **: g_variant_type_is_array: assertion 'g_variant_type_check (type)' failed

(tuxmusicstudio:4355): GLib-CRITICAL **: g_variant_get_type_string: assertion 'value != NULL' failed

(tuxmusicstudio:4355): GLib-ERROR **: g_variant_new: expected array GVariantBuilder but the built value has type '(null)'

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-05 20:30:42

g_variant_builder_add()格式字符串应该描述要添加的数据,而不是整个数组。所以像这样的事情应该有效:

代码语言:javascript
复制
g_variant_builder_add (builder, "(ss)", "test1","test2");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22886023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档