4XJGUͰͷ&OVNͷಛ
w ୈҰڃΦϒδΣΫτʢpSTUDMBTTUZQFʣ
w 3BX7BMVFʢ4USJOH*OU'MPBUʣ
w ωετఆ͕ٛͰ͖Δ
w ಠࣗͷϝιουΛఆٛͰ͖Δ
w $BTFʹUVQMF͕͑Δ
Slide 9
Slide 9 text
ୈҰڃΦϒδΣΫτ
ʢpSTUDMBTTUZQFʣ
w มʹ֨ೲՄೳ
w σʔλߏʹ֨ೲՄೳ
w ͦΕࣗମ͕ಠࣗʹଘࡏͰ͖Δ
w ؔͷύϥϝʔλͱͯ͢͜͠ͱ͕Ͱ͖Δ
w ؔͷΓͱͯ͠ฦ͢͜ͱ͕Ͱ͖Δ
Slide 10
Slide 10 text
3BX7BMVF
enum PeachBoySlave: Int {
case Dog
case Monkey
case Bird
}
w 4XJGU4UZMFɹ
print(PeachBoySlave.Bird.rawValue) // 2
Slide 11
Slide 11 text
3BX7BMVF
enum PeachBoySlave: String {
case Dog = "Dog"
case Monkey = "Monkey"
case Bird = "Bird"
}
w 4XJGU4UZMFɹ
print(PeachBoySlave.Bird.rawValue) // Bird
Slide 12
Slide 12 text
3BX7BMVF
guard let slaveType = PeachBoySlave(rawValue: "Bird") else {
return
}
w 3BX7BMVFʹଘࡏ͢Ε&OVNΛ࣮ମԽͰ͖Δ
print(slaveType) // Bird
Slide 13
Slide 13 text
ωετ
enum PeachBoySlave: String {
case Dog
case Monkey
case Bird
enum Actor {
case Grandpa
case Grandma
}
}
w &OVNͷఆٛʹ͞Βʹ&OVNΛఆٛ͢Δ͜ͱ͕Մ
ೳ
Slide 14
Slide 14 text
ಠࣗͷϝιουఆٛ
enum PeachBoyEnemy {
case Oni
case Boss
func encount() {
print("Enemy")
}
}
w &OVNʹؔΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
Slide 15
Slide 15 text
ܭࢉܕϓϩύςΟఆٛ
enum PeachBoyEnemy {
case Oni
case Boss
…
var count: Int {
switch self {
case Oni:
return 10
case Boss:
return 1
}
}
}
w ܭࢉܕϓϩύςΟͷΈఆٛ͢Δ͜ͱ͕Ͱ͖Δ
Slide 16
Slide 16 text
5VQMF
enum PeachBoyEnemy {
case Oni(String, String)
case Boss
func encount() {
switch self {
case Oni(let number, let colorName):
print(Number + ": Oni " + colorName)
case Boss:
print("Boss")
}
}
}
w $BTFʹ5VQMFΛࢦఆ͢Δ͜ͱͰҟͳΔߏΛ࣋ͭ
ϝϯόʔΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
Slide 17
Slide 17 text
5VQMF
let oni: PeachBoyEnemy = .Oni("1", "Red")
oni.encount()
w $BTFʹ5VQMFΛࢦఆ͢Δ͜ͱͰҟͳΔߏΛ࣋ͭ
ϝϯόʔΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
1: Oni Red
Slide 18
Slide 18 text
"MBNPpSFͷ3PVUFSͰͷԠ༻
enum Router: URLRequestConvertible {
case ItemSearch([String : AnyObject])
var URLString: String {
let baseURL = "http://shopping.yahooapis.jp/ShoppingWebService/V1/json/"
switch self {
case ItemSearch:
return baseURL + "itemSearch"
}
}
var Method: Alamofire.Method {
switch self {
case .ItemSearch:
return .GET
}
}
var URLRequest: NSMutableURLRequest {
let request = NSMutableURLRequest(URL: NSURL(string: URLString)!)
switch self {
case .ItemSearch(let parameters):
return Alamofire.ParameterEncoding.URL.encode(request, parameters: parameters).0
}
}
Slide 19
Slide 19 text
"MBNPpSFͷ3PVUFSͰͷԠ༻
enum Router: URLRequestConvertible {
case ItemSearch([String : AnyObject])
…
var URLRequest: NSMutableURLRequest {
let request = NSMutableURLRequest(
URL: NSURL(string: URLString)!)
switch self {
case .ItemSearch(let parameters):
return Alamofire.ParameterEncoding.
URL.encode(
request, parameters: parameters).0
}
}
Slide 20
Slide 20 text
δΣωϦΫεͷԠ༻
public enum Result {
case Success(Value)
case Failure(Error)
}
w UVCMFͱδΣωϦΫεΛࢦఆ͢Δ͜ͱͰޭ࣌ɺࣦ
ഊ࣌Λฦ͢&OVNΛఆٛ͢Δ͜ͱ͕Ͱ͖Δ
Slide 21
Slide 21 text
δΣωϦΫεͷԠ༻
func resultWithCode(code: Int?) -> Result {
guard let unwrapedCode = code else {
return .Failure(NSError(domain: "MyApp", code: 0,
userInfo: nil))
}
return .Success(unwrapedCode)
}
w ΓΛ3FTVMUʹͨ͠߹
Slide 22
Slide 22 text
δΣωϦΫεͷԠ༻
let result = resultWithCode(200)
switch result {
case .Success(let code):
print(code)
case .Failure(let error):
print(error)
}
w ύλʔϯϚονͰൺֱ͢Δ͜ͱ͕Ͱ͖Δ
Slide 23
Slide 23 text
࣮ࡍʹ͏έʔε
Alamofire.request(Router.ItemSearch(parameters))
.responseJSON { response in
switch response.result {
case .Success(let value) :
let json = JSON(value)
guard let resultSet = json["ResultSet"].dictionary else {
return
}
guard let resultsOfOnePage = resultSet["0"]?.dictionary else {
return
}
guard let results = resultsOfOnePage["Result"]?.dictionary else {
return
}
self.items = results.keys.map { Item(json: results[$0]!) }
case .Failure(let error) :
print("error: \(error)")
}
self.tableView?.reloadData()
self.refreshControl?.endRefreshing()
}
Slide 24
Slide 24 text
࣮ફฤ
.PEFSO$PSF%BUBCZUSZ4XJGU
Slide 25
Slide 25 text
·ͱΊ
w 0CKFDUJWF$͔ΒͷڧԽ͞Ε͍ͯΔ
w աڈͷҨ࢈Λܕ҆શͳϓϩάϥϜੜ·ΕมΘΒͤ
ΔώϯτʹͳΔ
w δΣωϦΫεͱԠ༻͢Δͱͷൺֱॲཧ؆ܿʹه
ड़Ͱ͖Δ