More Related Content
PDF
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8 PDF
JavaScriptCore.framework の普通な使い方 #cocoa_kansai PDF
ECMAScript6による関数型プログラミング PDF
Elasticsearch入門 pyfes 201207 PDF
What is doobie? - database access for scala - PDF
PPTX
Deep dive into oss written in swift PDF
PHPコードではなく PHPコードの「書き方」を知る What's hot
PDF
PDF
Integral - New O/R Mapper for Common Lisp PDF
知って得するC# LINQ to Objects編 PDF
Goでヤフーの分散オブジェクトストレージを作った話 Go Conference 2017 Spring PDF
これからのJavaScriptー関数型プログラミングとECMAScript6 PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから... PDF
PDF
PPT
PDF
PDF
PDF
Everyday Life with clojure.spec PDF
PPTX
LINQ 概要 + 結構便利な LINQ to XML PDF
PDF
PDF
Echo server implementation for Python PDF
PDF
20140930 anything as_code KEY
Viewers also liked
PDF
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」 PDF
PDF
Command Line Tool in swift PDF
Core dataと比較してrealmを使ったまとめ PDF
PUSH通知の許可をよりもらうためのUI考察など PDF
PDF
PDF
Extra view @ kyobashi.swift PDF
Can we live in a pure Swift world? PDF
PDF
PDF
PDF
PDF
PDF
PPTX
おうちハック発表会 #5 家族の「ただいま」を教えてくれるキーホルダー PDF
PDF
自分でできることを増やしてみるというのは結構楽しかったという新米iOS開発者の小話 PDF
Similar to OSSから学ぶSwift実践テクニック
PDF
PDF
PDF
Swift らしい表現を目指そう #eventdots PPTX
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】 KEY
PDF
PDF
Swift 2.0 大域関数の行方から #swift2symposium PDF
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク - PDF
PDF
Swift 2.0 で変わったところ「後編」 #cswift PPTX
Deep dive into oss written in swift PDF
PDF
Swift 2.0 で変わったところ「前編」 #cswift PDF
PDF
Swift2 の新機能 Protocol Extension PDF
Swift Protocol and Selector PDF
PDF
ジェネリック関数の呼び出され方 #cocoa_kansai PDF
RubyとActive Support for expert 2 PDF
オープンソースエコシステム #demodaytokyo More from 庸介 高橋
PPTX
Swift3とObjective-Cのブリッジでハマったこと PPTX
Cookpad TechConf 2019 - Build Chat with Firestore PPTX
最新技術に挑戦し続ける LIFULL HOME'Sアプリの開発について PDF
PPTX
LIFULL HOME'S Firebaseによる特集配信 PPTX
PPTX
Jenkins + Deploygateを使った簡単ベータ配信 PPTX
家族の「ただいま」を教えてくれるキーホルダー NFC版 PPTX
【ヒカラボ 2018/02/01】iOS LIFULL HOME'Sアプリリニューアルの裏側 Recently uploaded
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
PMBOK 7th Edition Project Management Process Scrum PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研) PDF
PMBOK 7th Edition_Project Management Context Diagram PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S... PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
PMBOK 7th Edition_Project Management Process_WF Type Development PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector 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.