LoginSignup
13
15

More than 5 years have passed since last update.

swift 3.0 のメモ

Last updated at Posted at 2016-06-16

delay

let _0_delay = 3.0 * Double(NSEC_PER_SEC)
let _0_time  = DispatchTime.now() + Double(Int64(_0_delay)) / Double(NSEC_PER_SEC)
DispatchQueue.main.acyncAfter(deadline: _0_time, execute: {
})

DispatchQueue.main.acyncAfter(deadline: DispatchTime.now() + Double(Int64(3.0 * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: {
})

main thread

DispatchQueue.main.async(execute: { [weak self] in
    guard let _0_weakSelf = self else { return }
})

URLSession POST dataTask
NSMutableURLRequest を dataTask でキチッと as URLRequest しないとエラーになる

let req: NSMutableURLRequest = NSMutableURLRequest(url: url)
let config: URLSessionConfiguration = URLSessionConfiguration.default()
/* setup post data */
let data: NSMutableData = NSMutableData()
if let td: Dictionary = txtD {
    for txtKey: String in td.keys {
        if let txtVal: String = td[txtKey] {
            data.append(NSString(format: "--%@\r\n", CommonSession._Boundary).data(using: String.Encoding.utf8.rawValue)!)
            data.append(NSString(format: "Content-Disposition: form-data;").data(using: String.Encoding.utf8.rawValue)!)
            data.append(NSString(format: "name=\"%@\"\r\n\r\n", txtKey).data(using: String.Encoding.utf8.rawValue)!)
            data.append(NSString(format: "%@\r\n", txtVal).data(using: String.Encoding.utf8.rawValue)!)
        }
    }
}
/* add last boundary */
let d: Data = NSString(format: "--%@--\r\n", CommonSession._Boundary).data(using: String.Encoding.utf8.rawValue)!
data.append(d)

/* setup post request */
req.httpMethod = "POST"
req.httpBody = data as Data
let session: URLSession = URLSession(configuration: config, delegate: nil, delegateQueue: nil)
let task: URLSessionDataTask = session.dataTask(with: req as URLRequest, completionHandler: { [weak self] (data, response, error) in
    do {
    } catch let e as NSError {
    }
})

NSNotification
name の String は rawValue が必要になった

func SampleFunc(n: NSNotification) {
    guard
        let name: String = n.name.rawValue where name == "通知の名前",
        let info: [NSObject : AnyObject] = n.userInfo
    else {
        return
    }
}

送る側もちょっと変更なった

NotificationCenter.default.post(name: Notification.Name(rawValue: "通知の名前"), object: nil)

String の url encode

if let u: String = "http://www.tes.com/あいうえお".addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) {
    return u
}

observeValueForKeyPath(名前も短くなった)

override func observeValue(forKeyPath keyPath: String?, of object: AnyObject?, change: [NSKeyValueChangeKey : AnyObject]?, context: UnsafeMutablePointer<Void>?) {
}

CGRectMake, CGRectZero, CGSizeZero... etc.
全部使えなくなった

CGRect(x: 0, y: 0, width: 0, height: 0)
CGSize(width: 0, height: 0)

とりあえずextensionで・・・

extension CGRect {
    static func Make(_ x: CGFloat, _ y: CGFloat, _ w: CGFloat, _ h: CGFloat) -> CGRect {
        return CGRect.init(x: x, y: y, width: w, height: h)
    }
    static var Zero: CGRect {
        get {
            return CGRect.init(x: 0, y: 0, width: 0, height: 0)
        }
    }
}

let a: CGRect = CGRect.Make(0, 0, 0, 0)
let b: CGRect = CGRect.Zero

CGAffineTransform関連

CGAffineTransform.identity
CGAffineTransform(scaleX: x, y: y)
CGAffineTransform(translationX: x, y: y)

#selectorはメソッドのパラメータの名前いるようになった

#selector(Class.method(_:))      // before
#selector(Class.method(name:))   // after

String分割

let s: [String] = str.componentsSeparatedBy("=")     // before
let s: [String] = str.components(separatedBy: "=")   // after

func -> var (他にもちょいちょい変わってる)
classLayerとか、shouldAutorotateとか。。。

/// before
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.all
}
override func prefersStatusBarHidden() -> Bool {
    return true
}
override func preferredStatusBarStyle:() -> UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}
/// after
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.all
}
override var prefersStatusBarHidden: Bool {
    return true
}
override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}
13
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15