MacRubyはまだ完成していません-私が使っているルビーコードのいくつかでは動作しません。同じNSDataの問題が発生し、次のコードで問題ないように見えるCFDataインスタンスを作成できました。
gem 'RubyInline'
require 'inline'
class CFDataWrapper
begin
inline do |builder|
builder.include "<CoreFoundation/CoreFoundation.h>"
builder.c_raw_singleton "
static VALUE fromString(int argc, VALUE *args){
CFDataRef d = CFDataCreate(NULL, RSTRING_PTR(args[0]), RSTRING_LEN(args[0]));
VALUE result;
char type = '@';
ocdata_to_rbobj(Qnil,&type, (const void *)&d, &result, false) ;
return result;
}
"
end
end
end
bytes = [128].pack('i1')
data = CFDataWrapper.fromString(bytes)
puts data.inspect
inspectからの出力は、10.6未満とは異なりますが、NSDataインスタンスを期待するメソッドに戻すことができ、それらは機能しているように見え、NSDataメソッドを呼び出します。このおもちゃのスクリプト以外にも、コアデータドキュメントにデータを入力するために使用するスクリプトが機能します。ここで、エンティティの1つにバイナリデータ属性があります