Slide 1

Slide 1 text

ඞࡴ ࠷৽iOSΞϓϦ։ൃ௒ɹɹٕ

Slide 2

Slide 2 text

cockscomb

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

 WATCH SPORT
 42mm Space Gray Aluminum Case with Black Sport Band

Slide 5

Slide 5 text

ඞࡴ ࠷৽iOSΞϓϦ։ൃ௒ɹɹٕ

Slide 6

Slide 6 text

ඞࡴ ΞϯϥοϓϋϦέʔϯ

Slide 7

Slide 7 text

let intLike = ["12.3", "45", "6-7-8"] let results = intLike.map { $0.toInt() } println(results) // => [nil, Optional(45), nil]

Slide 8

Slide 8 text

let intLike = ["12.3", "45", "6-7-8"] let results = intLike.map { $0.toInt() }.filter { $0 != nil }.map { $0! } println(results) // => [45]

Slide 9

Slide 9 text

let intLike = ["12.3", "45", "6-7-8"] let results = intLike.flatMap { $0.toInt().map { [ $0 ] } ?? [] } println(results) // => [45] New in Swift 1.2

Slide 10

Slide 10 text

ΞϯϥοϓϋϦέʔϯ

Slide 11

Slide 11 text

ඞࡴ ਅۭΦϖϨʔγϣϯ࢐Γ

Slide 12

Slide 12 text

class DragonOperation: NSOperation { let string: String var result: String? init(_ string: String) { self.string = string } override var asynchronous: Bool { return true } ... override func start() { if cancelled { internalFinished = true return } internalExecuting = true let queue = dispatch_get_global_queue( QOS_CLASS_UTILITY, 0) dispatch_async(queue) { self.result = self.string.lowercaseString self.internalExecuting = false self.internalFinished = true } } }

Slide 13

Slide 13 text

private var internalExecuting: Bool = false { willSet { willChangeValueForKey("isExecuting") } didSet { didChangeValueForKey("isExecuting") } } override var executing: Bool { return internalExecuting } private var internalFinished: Bool = false { willSet { willChangeValueForKey("isFinished") } didSet { didChangeValueForKey("isFinished") } } override var finished: Bool { return internalFinished }

Slide 14

Slide 14 text

let waza = DragonOperation("Z") waza.completionBlock = { if let result = waza.result { println(result) // => "z" } } waza.start()

Slide 15

Slide 15 text

let oraora = ["X", "Y", "Z"].map { DragonOperation($0) } let queue = NSOperationQueue() dispatch_async(dispatch_queue_create("Hissatsu", nil)) { queue.addOperations(oraora, waitUntilFinished: true) dispatch_sync(dispatch_get_main_queue()) { let results = oraora.flatMap { $0.result.map { [ $0 ] } ?? [] } println(results) // => ["x", "y", "z"] } }

Slide 16

Slide 16 text

ਅۭΦϖϨʔγϣϯ࢐Γ

Slide 17

Slide 17 text

ඞࡴ ΠχϡϝϨΠτόελʔ

Slide 18

Slide 18 text

let fonts = "/System/Library/Fonts" let files = NSFileManager().enumeratorAtPath(fonts)! while let path: AnyObject = files.nextObject() { println(path) }

Slide 19

Slide 19 text

struct GeneratorOfNSEnumerator : GeneratorType, SequenceType { private let enumerator: NSEnumerator init(_ enumerator: NSEnumerator) { self.enumerator = enumerator } mutating func next() -> T? { return self.enumerator.nextObject() as! T? } func generate() -> GeneratorOfNSEnumerator { return GeneratorOfNSEnumerator(self.enumerator) } } let fonts = "/System/Library/Fonts" let files = NSFileManager().enumeratorAtPath(fonts)! for path in GeneratorOfNSEnumerator(files) { println(path) }

Slide 20

Slide 20 text

let fonts = "/System/Library/Fonts" let files = NSFileManager().enumeratorAtPath(fonts)! for path in files { println(path) } New in Swift 1.2

Slide 21

Slide 21 text

ΠχϡϝϨΠτόελʔ

Slide 22

Slide 22 text

ඞࡴ γϟυ΢ɾΞΫςΟϏςΟ

Slide 23

Slide 23 text

let title = "Apple" let URL = NSURL(string: "http://www.apple.com/")! UIActivityViewController(activityItems: [title, URL], applicationActivities: nil)

Slide 24

Slide 24 text

class SharableTitle: NSObject, UIActivityItemSource { let title: String? init(title: String?) { self.title = title } func activityViewControllerPlaceholderItem( activityViewController: UIActivityViewController) -> AnyObject { return title ?? "" } func activityViewController( activityViewController: UIActivityViewController, itemForActivityType activityType: String) -> AnyObject? { if activityType == UIActivityTypePostToTwitter || activityType == UIActivityTypePostToFacebook { return title } else { return nil } } func activityViewController( activityViewController: UIActivityViewController, subjectForActivityType activityType: String?) -> String { return title ?? "" } }

Slide 25

Slide 25 text

let title = "Apple" let URL = NSURL(string: "http://www.apple.com/")! UIActivityViewController( activityItems: [SharableTitle(title: title), URL], applicationActivities: nil)

Slide 26

Slide 26 text

γϟυ΢ɾΞΫςΟϏςΟ

Slide 27

Slide 27 text

ඞࡴ ΦʔαϜϑΝϯΫγϣϯίʔϧ

Slide 28

Slide 28 text

class Awesome { func awesome(string: String) -> String { return string.uppercaseString } } let a = Awesome() Awesome.awesome(a)("Awesome") // => "AWESOME"

Slide 29

Slide 29 text

class SuperAwesome: Awesome { override func awesome(string: String) -> String { return string.lowercaseString } } let s = SuperAwesome() Awesome.awesome(s)("Awesome") // => "awesome"

Slide 30

Slide 30 text

ΦʔαϜϑΝϯΫγϣϯίʔϧ

Slide 31

Slide 31 text

ඞࡴ ΞϯϥοϓϋϦέʔϯ ਅۭΦϖϨʔγϣϯ࢐Γ ΠχϡϝϨΠτόελʔ γϟυ΢ɾΞΫςΟϏςΟ ΦʔαϜϑΝϯΫγϣϯίʔϧ

Slide 32

Slide 32 text

ඞࡴ ࠷৽iOSΞϓϦ։ൃ௒ɹɹٕ