Трудности преобразования в Swift 3 - программирование
Подтвердить что ты не робот

Трудности преобразования в Swift 3

После преобразования из Swift 2 в Swift 3 (даже после преобразования edit- > convert → в текущий быстрый синтаксис) я получаю много ошибок. Особенно:

<w640"

Мне показаны общие 90 ошибок для моего проекта, который отлично работал в Swift 2 до того, как я загрузил этот бета-код Xcode 8.0 и преобразован в Swift 3

Является ли это ошибкой преобразования?

4b9b3361

Ответ 1

Большинство из них - простые исправления, просто нажав красную кнопку, и Xcode исправит это для вас! Другие включают:

CGRect

Swift 2:

let frame = CGRectMake(0, 0, 20, 20)

Swift 3:

let frame = CGRect(x: 0, y: 0, width: 20, height: 20)

CGPoint

Swift 2:

let point = CGPointMake(0, 0)

Swift 3:

let point = CGPoint(x: 0, y: 0)

CGSize

Swift 2:

let size = CGSizeMake(20, 20)

Swift 3:

let size = CGSize(width: 20, height: 20)

CGRectGetMidX

Swift 2:

CGRectGetMidX(view)

Swift 3:

view.midX

CGRectGetMidY

Swift 2:

CGRectGetMidY(view)

Swift 3:

view.midY

UIColor

Swift 2:

let color = UIColor.redColor()

Swift 3:

let color = UIColor.red

"NS"

Swift 2:

NSTimer
NSData
NSError

Swift 3:

Timer
Data
Error

UserDefaults

Swift 2:

NSUserDefaults.standardUserDefaults().//something

Swift 3:

UserDefaults.standard.//something

Ответ 2

И всегда не забудьте использовать полезную функцию "Fix all in Scope", которую можно найти в редакторе → Fix all in Scope

Ответ 3

Я конвертировал проект, и Xcode не помогал мне в каких-либо исправлениях, поэтому я прибегал к поиску и замене регулярных выражений: -

CGPointMake\((.*),[ ]*([^\)]+)\)
CGPoint(x:$1, y:$2)

CGSizeMake\((.*),[ ]*([^\)]+)\)
CGSize(width:$1, height:$2)

Обратите внимание, что они не знают вложенных круглых скобок, но, вероятно, достаточно хороши для 90% случаев.