Вызов метода, который принимает необязательный указатель ошибки - PullRequest
1 голос
/ 04 сентября 2011

Я пытаюсь вызвать метод в MacRuby, который определен так:

NSPropertyListSerialization
---------------------------
+ (id)propertyListWithStream:(NSInputStream *)stream
    options:(NSPropertyListReadOptions)opt
    format:(NSPropertyListFormat *)format
    error:(NSError **)error

Последний аргумент должен быть указателем, поэтому я делаю это:

err = Pointer.new '@'

data = NSPropertyListSerialization.propertyListWithStream plist,
  options: KCFPropertyListMutableContainers,
  format: KCFPropertyListBinaryFormat_v1_0,
  error: err

Однако я получаю эту ошибку:

expected instance of Pointer, got `200' (Fixnum) (TypeError)

Трассировка стека происходит от строки error: err.

Эта ошибка одинакова независимо от типа объекта передано как error.Это может быть ноль, указатель, строка или совершенно произвольный тип, ошибка остается прежней.

У меня есть понятия не имею откуда взято 200 fixnum.Конечно, не мой код (в этом скрипте чуть больше кода, чем то, что я вставил).


Обновление: Решено с помощью @whitequark и @alloy.Это было для редактирования закладок Safari в iOS Simulator.Вы можете прочитать / записать двоичные plist-файлы здесь

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Stacktraces для многострочных операторов всегда ссылаются на последнюю строку (т. Е. Если ошибка не вызвана обнаруживаемым подвыражением), а fixnum 200 является одной из констант, начинающихся с KCFPropertyList.

1 голос
/ 05 сентября 2011

В зависимости от содержимого списка вы можете прочитать его с помощью: NSDictionary.dictionaryWithContentsOfFile(path).

...