Swift CFDictionaryCreateMutable

Я пытаюсь создать PDF-документ в iOS, используя Quartz 2D. Когда я пытаюсь определить словарь для установки метаданных PDF, я получаю эту ошибку:

Не удается вызвать «CFDictionaryCreateMutable» со списком аргументов типа «(CFAllocator!, Int, CFDictionaryKeyCallBacks, CFDictionaryValueCallBacks)»

Вот как я определил свой словарь:

var documentInfo = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, kCFTypeDictionaryKeyCallBacks, kCFTypeDictionaryValueCallBacks)

person a0alv    schedule 12.05.2015    source источник
comment
Вместо этого вы можете/должны создать словарь Swift. См. stackoverflow.com/questions/ 30143515/ по аналогичной проблеме.   -  person Martin R    schedule 12.05.2015
comment
Поскольку я пытаюсь настроить свой контекст PDF, как я могу инициализировать ключи вспомогательного словаря (kCGPDFContextAuthor, kCGPDFContextCreator и т. д.)? @Мартин Р   -  person a0alv    schedule 12.05.2015
comment
@MartinR (кажется, вы разбираетесь в Swift), есть ли у вас какие-либо советы по словарям CF, которые принимают непрозрачные ключи, которые в противном случае не могут быть хешированы на стороне Swift? Я пытаюсь портировать код Obj-C, в котором есть сопоставление словаря CTFont -> CGPath, и я не понял, как Swift может создавать, приводить или иным образом адаптировать эти типы. В частности, лучше ли создавать эти словари с помощью метода, описанного выше, и использовать более поздние ссылки, или попытаться создать быстрые словари, используя хешируемые адаптеры для непрозрачных типов CF? (Я могу опубликовать вопрос для этого, если это поможет) - спасибо.   -  person Chris Conover    schedule 02.11.2015


Ответы (1)


Во-первых, создайте быстрый словарь.

var wDict = [ "KEY": "VALUE" ]

И приведите его к CFDictionaryRef, когда это необходимо для создания PDF.

var documentInfo = wDict as CFDictionaryRef
person Satachito    schedule 12.05.2015
comment
Для Swift 3 CFDictionaryRef теперь просто CFDictionary. - person i_am_jorf; 23.12.2016