2012-05-29 1 views
0

Я пытаюсь использовать Ruby Motion для добавления записи в AddressBook. Я не могу понять, как правильно создать экземпляр параметра CFErrorRef.Как создать параметр CFErrorRef, необходимый для изменения ABAddressBook через Ruby Motion

error = nil # compiles but won't capture an error properly 
# Here are my numerous attempts: 
#error = Pointer.new(:object) expected instance of Pointer of type `^{__CFError}', got `@' (TypeError) 
#error = Pointer.new('^{__CFError}') Can't find pointer description for type `^{__CFError}' 
#error = Pointer.new('{__CFError}') Can't find pointer description for type `{__CFError}' 
#error = Pointer.new('__CFError') Can't find pointer description for type `__CFError' 
#error = Pointer.new(CFError.type) uninitialized constant AppDelegate::CFError (NameError) 
#error = Pointer.new(CFErrorRef.type) uninitialized constant AppDelegate::CFErrorRef 
p = ABPersonCreate() 
raise error[0] unless ABRecordSetValue(p, KABPersonFirstNameProperty, "Guy", error) 
raise error[0] unless ABRecordSetValue(p, KABPersonLastNameProperty, "Argo", error) 
ab = ABAddressBookCreate() 
raise error[0] unless ABAddressBookAddRecord(ab, p, error) 
raise error[0] unless ABAddressBookSave(ab, error) 
NSLog("Record successfully added.") 

Предложения приветствуются. Guy

+0

Выполнены ли какие-либо из ваших вызовов 'ABRecordSetValue()' на самом деле? или вы добираетесь до «Запись успешно добавлена».? –

+0

@ Paul.s, когда я пытаюсь выполнить его код, это 'ABRecordSetValue (...)' это то, что выбрасывает исключение: 'ожидаемый экземпляр указателя типа '^ {__ CFError}', получил' @ '(TypeError) ' –

+0

@DylanMarkow, если я полностью копирую его в точности: S –

ответ

1

Обновления до RubyMotion 1,9 включает в себя исправление:

  • Исправлена ​​ошибка в компиляторе, где API, принимающие указатели на типов CoreFoundation не мог быть даны объектами указателя: объект типа (например, . CFErrorRef *).

sudo motion update получите это для вас.