2016-09-23 5 views
3

Я получаю SwiftLint предупреждение на этой линии:Нарушение конструктора Legacy: конструкторы Swift предпочтительнее, чем устаревшие функции удобства. (Legacy_constructor)

return UIEdgeInsetsMake(topInset, leftInset, bottomInset, rightInset) 

Это предупреждение:

Наследие Constructor Нарушений: Swift Конструкторы предпочтительнее функции наследство удобства. (Legacy_constructor)

Я получаю предупреждение на этой линии, а также:

return CGRectInset(bounds, insetX, insetY) 

Наследие CGGeometry функций Нарушений: свойства расширения Struct и методы предпочтительнее устаревшие функции (legacy_cggeometry_functions)

Что такое Быстрая версия для UIEdgeInsetsMake и CGRectInset?

+0

У вас есть ссылка на https://developer.apple.com/reference/uikit/uiedgeinsets? Или попробуйте автозаполнение: 'return UIEdgeInsets (' –

+0

Я сделал, но версия Swift имеет одно и то же имя. Поэтому я не знаю, как разрешить это предупреждение или если есть другой способ сделать это. – etayluz

+2

Тип 'UIEdgeInsets', так что начните с' UIEdgeInsets (', * not *' UIEdgeInsetsMake' ... –

ответ

4

Swift хочет, чтобы вы обновлялись до новых инициализаторов структуры для этих типов, а не для старых конструкторов C. Так что ваша врезка инициализатор будет изменен следующим образом:

return UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset) 

Метод CGRectInset C был изменен, чтобы быть методом на CGRect структуры.

return bounds.insetBy(dx: insetX, dy: insetY) 
+0

В итоге я использовал UIEdgeInsets вместо UIEdgeInsetsMake, как предложил @Martin R. – etayluz

+1

То, что я хотел написать. 'UIEdgeInsetsMake' был типом с моей стороны. – keithbhunter

Смежные вопросы