方法

GLibVariantIternext

since: 2.24

声明 [src]

gboolean
g_variant_iter_next (
  GVariantIter* iter,
  const gchar* format_string,
  ...
)

描述 [src]

获取容器中的下一个项目,并根据 format_string 解包到变量参数列表中,返回 TRUE

如果没有更多项可用,则返回 FALSE

假设此函数的变量参数列表中给出的所有指针都指向未初始化的内存。释放解包过程返回的所有值是调用者的责任。

以下是一个使用 g_variant_iter_next() 的内存管理示例

  // Iterates a dictionary of type 'a{sv}'
  void
  iterate_dictionary (GVariant *dictionary)
  {
    GVariantIter iter;
    GVariant *value;
    gchar *key;

    g_variant_iter_init (&iter, dictionary);
    while (g_variant_iter_next (&iter, "{sv}", &key, &value))
      {
        g_print ("Item '%s' has type '%s'\n", key,
                 g_variant_get_type_string (value));

        // must free data for ourselves
        g_variant_unref (value);
        g_free (key);
      }
  }

有关在处理循环时对 C 程序员更方便的解决方案,请参阅 g_variant_iter_loop()。

format_string 确定了用于解包值时使用的 C 类型,也确定值是否复制或借用。

请参阅 GVariant 格式字符串部分。

Available since: 2.24

此方法不是直接可用到语言绑定的。

参数

format_string

类型: const gchar*

一个 GVariant 格式字符串。

数据归方法调用者所有。
值是一个以 NUL 结尾的 UTF-8 字符串。
...

类型: 

将值解包到的参数。

返回值

类型: gboolean

TRUE 如果解包了值,或者如果没有任何值,则返回 FALSE