你如何满足Swift中CTFrameGetLineOrigins()中的'lineOrigins'参数? [重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

我试图从这里找出CTFrameGetLineOriginsCTFrameGetLineOrigins Got Incorrect Origins,并尝试将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的第3个参数的错误: 无法将'[CGPoint]'类型的值转换为预期的参数类型'UnsafeMutablePointer'

我如何通过此错误?

objective-c swift unsafemutablepointer ctframe
2个回答
2
投票

实际上我只是将&添加到参数中并使常量变量。

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

1
投票

你可以试试

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

或直接

CTFrameGetLineOrigins(frame, CFRangeMake(0, 0),&lineOrigins)
© www.soinside.com 2019 - 2024. All rights reserved.