调用接受可选错误指针的方法

时间:2011-09-04 14:14:47

标签: pointers macruby

我试图在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传递的对象类型如何。它可以是nil,Pointer,字符串或完全任意类型,错误保持不变。

不知道 200 fixnum来自哪里。当然不是我的代码(这个脚本中的代码几乎没有我粘贴的代码)。


更新:在@whitequark和@alloy的帮助下解决。这是用于在iOS模拟器中编辑Safari书签。您可以看到how to read/write binary plist files here

2 个答案:

答案 0 :(得分:1)

根据plist的内容,您应该能够阅读:NSDictionary.dictionaryWithContentsOfFile(path)

答案 1 :(得分:1)

多行语句的Stacktraces总是引用最后一行(即错误不是由可定位的子表达式引起),而fixnum 200是以KCFPropertyList开头的常量之一。