Невозможно преобразовать значение типа «CGPoint!» к ожидаемому типу аргумента «UnsafeMutablePointer‹CGPoint›»

Я получаю быструю ошибку сборки.

func pathRefFromText() -> CGPathRef {

        let attributed : NSAttributedString = self.attrubutedText
        let line : CTLineRef = CTLineCreateWithAttributedString(attributed as! CFAttributedStringRef)
        let runArray : CFArrayRef = CTLineGetGlyphRuns(line)
        for var runIndex = 0; runIndex < CFArrayGetCount(runArray); runIndex++ {
            let run: CTRunRef = (CFArrayGetValueAtIndex(runArray, runIndex) as! CTRunRef)
           // let runFont : CTFontRef = CFDictionaryGetValue(CTRunGetAttributes(run), kCTFontAttributeName)
            for(var runGlyphIndex = 0; runGlyphIndex < CTRunGetGlyphCount(run); runGlyphIndex++)
            {
                let thisGlyphRange : CFRange = CFRangeMake(runGlyphIndex, 1)
                let glyph : CGGlyph!
                let position : CGPoint!

               // The build error comes in these two lines
                CTRunGetGlyphs(run, thisGlyphRange, glyph)
                CTRunGetPositions(run, thisGlyphRange, position)

            }
        }
    }

Я получаю сообщение об ошибке сборки: «Невозможно преобразовать значение типа «CGPoint!» к ожидаемому типу аргумента «UnsafeMutablePointer»


person Aryan Kashyap    schedule 30.03.2016    source источник


Ответы (1)


Попробуйте использовать:

var glyph : CGGlyph = CGGlyph()
var position : CGPoint = CGPoint()

CTRunGetGlyphs(run, thisGlyphRange, &glyph)
CTRunGetPositions(run, thisGlyphRange, &position)
person Michael Dautermann    schedule 30.03.2016
comment
Технически это, вероятно, должно быть var glyph: CGGlyph? = nil (хотя = nil было бы совершенно необязательным). Вызываемые здесь функции не были обновлены с помощью аннотаций обнуляемости, но когда и если это произойдет, это, безусловно, будет помечен как необязательный, а не необязательный. Функция, конечно, не ожидает, что вы создадите экземпляр значения только для того, чтобы оно было перезаписано... - person nhgrif; 08.04.2016