Невозможно создать 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()
в файловых потоках, чтобы получить их содержимое в виде строки, или вызвать методы чтения, чтобы получить двоичные значения в виде массива целых чисел.