Не удалось создать GArray в Gjs

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

const GLib = imports.gi.GLib;

var garray = новый GLib.Array(true, true, 1); // Невозможно создать массив упакованного типа, так как он не имеет нулевых аргументов, может только обернуть существующий

var garray = новый GLib.Array(); // Невозможно создать массив упакованного типа, так как он не имеет нулевых аргументов, может только обернуть существующий

Мне нужен GArray, чтобы использовать его в методе GnomeKeyring.item_create_sync:

GnomeKeyring.item_create_sync("логин", 4, "имя", новый GLib.Array(true, true, 1) "pass", true);

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

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

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


person Nicolas    schedule 17.02.2013    source источник


Ответы (2)


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

person mcepl    schedule 29.04.2015

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

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

person RivenSkaye    schedule 06.11.2019