无法在Gjs中创建GArray

问题描述 投票:1回答:2

我尝试创建一个GArray,但是总是有相同的错误:

const GLib = imports.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(“登录”,4,“名称”,新的GLib.Array(true,true,1)“通过”,true);

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

  • [[]->对象0xb5d120d0不是(null)的子类,它是一个数组]
  • new Array()->对象0xb5e12138不是(null)的子类,它是一个数组]]
  • [{}->对象0xb5d0b1b0不是(null)的子类,它是对象]
  • [5->未处理的GType GArray从数字解压缩GArgument
  • ["5"->参数“属性”的预期类型接口,但类型为“字符串”]
  • [如果有人对GArrayGnomeKeyring.item_create_sync有解决方案,则>

    我尝试创建一个GArray,但始终有相同的错误:const GLib = imports.gi.GLib; var garray = new GLib.Array(true,true,1); //无法构造盒装类型Array,因为它没有...

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

GNOME Shell的回溯将在可能和需要时根据自己的意愿在JS和GNOME类型之间进行转换。如果您在JS空间中创建一个数组并将其传递给需要GArray的函数,那么如果您将该数组作为参数传递,则Shell会进行转换。

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

gnome gnome-shell gjs gnome-keyring-daemon
2个回答
1
投票

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


0
投票

GNOME Shell的回溯将在可能和需要时根据自己的意愿在JS和GNOME类型之间进行转换。如果您在JS空间中创建一个数组并将其传递给需要GArray的函数,那么如果您将该数组作为参数传递,则Shell会进行转换。

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

© www.soinside.com 2019 - 2024. All rights reserved.