我尝试创建一个GArray,但我总是犯同样的错误:
const GLib = imports.gi.GLib;
var garray = new GLib.Array(true,true,1); //无法构建 盒装类型数组,因为它没有零参数,只能 包装现有的
var garray = new GLib.Array(); //无法构造盒装类型数组 因为它没有零参数,所以只能包装一个现有的
我需要一个GArray才能在GnomeKeyring.item_create_sync方法中使用它:
GnomeKeyring.item_create_sync( “登录”, 4, “名称”, 新的GLib.Array(真,真,1) “通过”, 真);
我尝试了其他类型的数组而不是GArray,这里是错误
[]
- >对象0xb5d120d0不是(null)的子类,它是一个数组new Array()
- >对象0xb5e12138不是(null)的子类,它是一个数组{}
- >对象0xb5d0b1b0不是(null)的子类,它是一个Object 5
- >未处理的GType GArray从Number "5"
- >参数“属性”的预期类型接口,但类型为“字符串”如果有人有GArray
或GnomeKeyring.item_create_sync
答案 0 :(得分:0)
阅读/usr/share/gir-1.0/GnomeKeyring-1.0.gir
并搜索function name="item_create_sync"
。你有所有必需的参数,在我看来你需要一个简单的列表。 GnomeObjectIntrospection会在需要时将其转换为GArray。
答案 1 :(得分:0)
在可能和需要的情况下,GNOME Shell的回溯将根据自己的意愿在JS和GNOME类型之间进行转换。如果您在JS空间中创建一个数组并将其传递给需要GArray的函数,那么如果您将该数组作为参数传递,则Shell会进行转换。
唯一不被转换的对象是其类在一个空间中存在的对象,而不是在另一个空间中存在的对象。像GNOME文件对象一样,因为JS没有本机文件处理程序。
您可以在文件流上使用.toString()
方法以字符串形式获取其内容,或调用read方法以二进制形式获取二进制值。