1

我尝试创建一个 GArray 但我总是遇到同样的错误:

常量 GLib = 进口.gi.GLib;

var garray = new GLib.Array(true, true, 1); // 无法构造盒装类型 Array,因为它没有零参数,只能包装现有的

var garray = new GLib.Array(); // 无法构造盒装类型 Array,因为它没有零参数,只能包装现有的

我需要一个 GArray 才能在 GnomeKeyring.item_create_sync 方法中使用它:

GnomeKeyring.item_create_sync("login", 4, "name", new GLib.Array(true, true, 1) "pass", true);

我尝试了其他类型的数组而不是 GArray,这是错误

  • []-> 对象 0xb5d120d0 不是 (null) 的子类,它是一个数组
  • new Array()-> 对象 0xb5e12138 不是 (null) 的子类,它是一个数组
  • {}-> 对象 0xb5d0b1b0 不是 (null) 的子类,它是一个对象
  • 5-> 未处理的 GType GArray 从 Number 中解包 GArgument
  • "5"-> 参数“属性”的预期类型接口,但类型为“字符串”

如果有人有解决GArray方案GnomeKeyring.item_create_sync

4

2 回答 2

1

阅读/usr/share/gir-1.0/GnomeKeyring-1.0.gir并搜索function name="item_create_sync"。你在那里有所有必需的参数,在我看来你需要一个简单的列表。GnomeObjectIntrospection 将在需要时将其转换为 GArray。

于 2015-04-29T01:05:24.837 回答
0

GNOME Shell 的追溯将在可能和需要的情况下自行在 JS 和 GNOME 类型之间进行转换。如果您在 JS 空间中创建一个数组并将其传递给需要 GArray 的函数,如果您将该数组作为参数传递,Shell 将进行转换。

唯一未转换的对象是其类存在于一个空间中但不存在于另一个空间中的对象。与 GNOME 文件对象一样,因为 JS 没有本机文件处理程序。您可以使用文件流.toString()上的方法将其内容作为字符串获取,或者调用读取方法以将二进制值作为整数数组获取。

于 2019-11-06T11:48:53.843 回答