Как удовлетворить аргумент lineorigins в ctframegetlineorigins () в swift?

Я пытаюсь понять CTFrameGetLineOrigins отсюда: CTFrameGetLineOrigins получил неверное происхождение и пытаюсь преобразовать ObjC в Swift.

Obj-C:

CFArrayRef lines = CTFrameGetLines(frame);
size_t numOfLines = CFArrayGetCount(lines);
CGPoint lineOrigins[numOfLines];
CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), lineOrigins);

Быстрый:

let lines = CTFrameGetLines(frame)
let numOfLines: size_t = CFArrayGetCount(lines)
let lineOrigins = [CGPoint](repeating: CGPoint.zero, count: numOfLines)
CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), lineOrigins)

Но я получаю сообщение об ошибке для третьего параметра CTFrameGetLineOrigins:
. Невозможно преобразовать значение типа «[CGPoint]» в ожидаемый тип аргумента «UnsafeMutablePointer»

Как мне избавиться от этой ошибки?

1
0
182
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ты можешь попробовать

CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), UnsafeMutablePointer(&lineOrigins))

или напрямую

CTFrameGetLineOrigins(frame, CFRangeMake(0, 0),&lineOrigins)

Ах да, я только что обнаружил это. UnsafeMutablePointer() тоже кажется необязательным.

Kevin Wang 13.09.2018 21:08
Ответ принят как подходящий

На самом деле я просто добавил & к параметру и сделал константу переменной.

let lines = CTFrameGetLines(frame)
let numOfLines: size_t = CFArrayGetCount(lines)
var lineOrigins = [CGPoint](repeating: CGPoint.zero, count: numOfLines)
CTFrameGetLineOrigins(frame, CFRangeMake(0, 0), &lineOrigins)

Другие вопросы по теме