![]() | 新品価格 |

Xcode8系からSwift3.0がサポートされ
2.3が切られることが明確になったので
Swift3.0への移行を行なった。
コンバーターかませばそれで終わりだろうと思ったら
エラー吐いてて、コードの書き方結構変わってた
以下、Swift
・Swift2.3で動かす場合
最初はエラー吐いてたので一旦逃げた
Use Legacy Swift Language Version
http://qiita.com/Hakota/items/4a5e9201c7dc17e9017a
・関数の引数
func test(a:int, b:int)
だったら
test(1,b:2)
と最初は引数をつけない謎仕様がSwift2.3だったけど
swift3.0からは
test(a:1,b:2)
という仕様になった。
ただし、このままだと困るのでコンバーターかますと
func test(_ a:int, b:int)
と_が入ってswitf3.0でも
test(1,b:2)で呼び出しができるようになってる
http://dev.classmethod.jp/smartphone/iphone/swift3_0046_first_label/
・NS系がなくなった
NSData→Data
のようにNS系のものの型が変わった
http://dev.classmethod.jp/smartphone/iphone/implemented_proposals_for_swift3/
・get request
第一引数がURL型でできる
func dataTask(with url: URL,
completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask
https://developer.apple.com/reference/foundation/urlsession/1410330-datatask
・post request
var request = URLRequest
して今まで通り。
なぜか、NSMutableURLRequest
swiftConverterにかからなかった。
あと、NSErrorもErrorに直す必要あり
http://joyplot.com/documents/2016/10/05/swift-php-post/
・@escaping
離脱するクロージャーは@escapingをつける必要がある
マスタカの場合、httpリクエストのcompleteHandlerが
@escapingしろとのエラーに引っかかった
http://tech.vasily.jp/entry/swift_evolution_escape
一旦ここまででswfit3.0移行はおしまい。
objective-cをなるべくなくす方向に行くか
androidのモダン対応やるか
とやることはまだまだあるので、今後のマスタカに期待
タグ:Swift