More Related Content
PPTX
Deep dive into oss written in swift PDF
JavaScriptCore.framework の普通な使い方 #cocoa_kansai PDF
ECMAScript6による関数型プログラミング PDF
Elasticsearch入門 pyfes 201207 PDF
PDF
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8 PDF
PHPコードではなく PHPコードの「書き方」を知る PDF
What is doobie? - database access for scala - What's hot
PDF
Everyday Life with clojure.spec PPTX
LINQ 概要 + 結構便利な LINQ to XML PDF
PDF
Echo server implementation for Python PDF
Integral - New O/R Mapper for Common Lisp PDF
KEY
PPT
PDF
PDF
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring PDF
知って得するC# LINQ to Objects編 PDF
これからのJavaScriptー関数型プログラミングとECMAScript6 PDF
PDF
PDF
20140930 anything as_code PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから... PDF
PDF
PDF
PDF
Viewers also liked
PDF
PDF
Extra view @ kyobashi.swift PPTX
おうちハック発表会 #5 家族の「ただいま」を教えてくれるキーホルダー PDF
PDF
PDF
PDF
PDF
PDF
Can we live in a pure Swift world? PDF
自分でできることを増やしてみるというのは結構楽しかったという新米iOS開発者の小話 PDF
PDF
Core dataと比較してrealmを使ったまとめ PDF
PDF
PDF
PDF
PDF
PDF
PUSH通知の許可をよりもらうためのUI考察など PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」 PDF
Command Line Tool in swift Similar to OSSから学ぶSwift実践テクニック
PDF
PDF
Swift2 の新機能 Protocol Extension PDF
オープンソースエコシステム #demodaytokyo PDF
Swift 2.0 で変わったところ「後編」 #cswift PDF
PPTX
Deep dive into oss written in swift PDF
Swift 2.0 で変わったところ「前編」 #cswift PDF
PDF
PDF
Swift 2.0 大域関数の行方から #swift2symposium PDF
PDF
Swift らしい表現を目指そう #eventdots PDF
RubyとActive Support for expert 2 PDF
ジェネリック関数の呼び出され方 #cocoa_kansai PPTX
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】 PDF
Swift Protocol and Selector KEY
PDF
PDF
PDF
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク - More from 庸介 高橋
PPTX
Cookpad TechConf 2019 - Build Chat with Firestore PPTX
最新技術に挑戦し続ける LIFULL HOME'Sアプリの開発について PPTX
【ヒカラボ 2018/02/01】iOS LIFULL HOME'Sアプリリニューアルの裏側 PPTX
LIFULL HOME'S Firebaseによる特集配信 PPTX
PPTX
Jenkins + Deploygateを使った簡単ベータ配信 PPTX
Swift3とObjective-Cのブリッジでハマったこと PPTX
家族の「ただいま」を教えてくれるキーホルダー NFC版 PDF
OSSから学ぶSwift実践テクニック
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
requestの定義
public func request(
method:Method,
_ URLString: URLStringConvertible,
parameters: [String: AnyObject]? = nil,
encoding: ParameterEncoding = .URL,
headers: [String: String]? = nil)
-> Request
{
return Manager.sharedInstance.request(
method,
URLString,
parameters: parameters,
encoding: encoding,
headers: headers
)
}
Stringじゃない!
Alamofire.swift
- 8.
URLStringConvertible
public protocol URLStringConvertible{
∼中略∼
var URLString: String { get }
}
extension String: URLStringConvertible {
public var URLString: String {
return self
}
}
extension NSURL: URLStringConvertible {
public var URLString: String {
return absoluteString
}
}
extension NSURLComponents: URLStringConvertible {
public var URLString: String {
return URL!.URLString
}
}
extension NSURLRequest: URLStringConvertible {
public var URLString: String {
return URL!.URLString
}
}
String
NSURL
NSURLComponents
NSURLRequest
全てをrequestの引数に使える
Alamofire.swift
- 9.
- 10.
public struct Response<Value,Error: ErrorType> {
public let request: NSURLRequest?
public let response: NSHTTPURLResponse?
public let data: NSData?
public let result: Result<Value, Error>
public init(request: NSURLRequest?, response: NSHTTPURLResponse?, data: NSData?, result: Result<Value, Erro
self.request = request
self.response = response
self.data = data
self.result = result
}
}
extension Response: CustomStringConvertible {
public var description: String {
return result.debugDescription
}
}
extension Response: CustomDebugStringConvertible {
public var debugDescription: String {
var output: [String] = []
output.append(request != nil ? "[Request]: (request!)" : "[Request]: nil")
output.append(response != nil ? "[Response]: (response!)" : "[Response]: nil")
output.append("[Data]: (data?.length ?? 0) bytes")
output.append("[Result]: (result.debugDescription)")
return output.joinWithSeparator("n")
}
}
Response.swift(コメント省略)
- 11.
普通に書くとこんな感じ
public struct Response<Value,Error: ErrorType>: CustomStringConvertible, CustomDebugStringConvertible {
public let request: NSURLRequest?
public let response: NSHTTPURLResponse?
public let data: NSData?
public let result: Result<Value, Error>
public init(request: NSURLRequest?, response: NSHTTPURLResponse?, data: NSData?, result: Result<Value, Erro
self.request = request
self.response = response
self.data = data
self.result = result
}
// MARK: - CustomStringConvertible
public var description: String {
return result.debugDescription
}
// MARK: - CustomDebugStringConvertible
public var debugDescription: String {
var output: [String] = []
output.append(request != nil ? "[Request]: (request!)" : "[Request]: nil")
output.append(response != nil ? "[Response]: (response!)" : "[Response]: nil")
output.append("[Data]: (data?.length ?? 0) bytes")
output.append("[Result]: (result.debugDescription)")
return output.joinWithSeparator("n")
}
}
- 12.
- 13.
- 14.
public func authenticate(usingCredentialcredential: NSURLCredential) -> Self {
delegate.credential = credential
return self
}
public func progress(closure: ((Int64, Int64, Int64) -> Void)? = nil) -> Self {
if let uploadDelegate = delegate as? UploadTaskDelegate {
uploadDelegate.uploadProgress = closure
} else if let dataDelegate = delegate as? DataTaskDelegate {
dataDelegate.dataProgress = closure
} else if let downloadDelegate = delegate as? DownloadTaskDelegate {
downloadDelegate.downloadProgress = closure
}
return self
}
public func stream(closure: (NSData -> Void)? = nil) -> Self {
if let dataDelegate = delegate as? DataTaskDelegate {
dataDelegate.dataStream = closure
}
return self
}
Request.swift
オプションを追加したついでに
最後にselfを返す
- 15.
- 16.