我试图在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
答案 0 :(得分:1)
根据plist的内容,您应该能够阅读:NSDictionary.dictionaryWithContentsOfFile(path)
。
答案 1 :(得分:1)
多行语句的Stacktraces总是引用最后一行(即错误不是由可定位的子表达式引起),而fixnum 200是以KCFPropertyList
开头的常量之一。