Невозможно создать GArray в Gjs

Я пытаюсь создать GArray, но у меня всегда одна и та же ошибка:

const GLib = import.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(true, true, 1) "pass", true);

Я попробовал другой тип массива вместо GArray, вот ошибки

  • [] -> Объект 0xb5d120d0 не является подклассом (ноль), это массив
  • new Array() -> Объект 0xb5e12138 не является подклассом (нуль), это массив
  • {} -> Объект 0xb5d0b1b0 не является подклассом (ноль), это Объект
  • 5 -> Необработанный GType GArray распаковывает GArgument из Number
  • "5" -> Ожидаемый тип интерфейса для аргумента "атрибуты", но получил тип "строка"

Если у кого есть решение для GArray или для GnomeKeyring.item_create_sync

1 ответ

Читать /usr/share/gir-1.0/GnomeKeyring-1.0.gir и искать function name="item_create_sync", У вас есть все обязательные параметры, и мне кажется, что вам нужен простой список. GnomeObjectIntrospection переведет его в GArray при необходимости.

Ретроспектива оболочки GNOME будет преобразовывать между типами JS и GNOME по собственному желанию, где это возможно и требуется. Если вы создаете массив в пространстве JS и передаете его функции, которая требует GArray, оболочка преобразует массив, если вы передадите массив в качестве аргумента.

Не преобразовываются только те объекты, классы которых существуют в одном пространстве, но не в другом. Подобно файловым объектам GNOME, поскольку JS не имеет собственных обработчиков файлов. Вы можете использовать.toString() в файловых потоках, чтобы получить их содержимое в виде строки, или вызвать методы чтения, чтобы получить двоичные значения в виде массива целых чисел.

Другие вопросы по тегам